Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ and Codex plan the work and pick it up.
It grew out of [MoQ](https://github.com/moq-dev/moq). This is the standalone
version, being built for use in other repositories.

**Early days:** validation, readiness, and the planning, execution, merge, and
export skills are here. Automatic setup and release binaries are still being
**Early days:** validation, readiness, init/uninstall, and the planning,
execution, merge, and export skills are here. Release binaries are still being
built.

## A quest is just a file
Expand Down Expand Up @@ -114,7 +114,7 @@ Use `/quest-plan` in Claude Code or `$quest-plan` in Codex. Skills coordinate
within your agent session. Starting work stops at a PR; merging is a separate
invocation.

To use Quest in your own repository, follow the [manual setup](docs/getting-started.md).
To use Quest in your own repository, follow the [getting started guide](docs/getting-started.md) (`quest init`).
`quest guide` prints the format and workflow.

## Where this is going
Expand Down
44 changes: 24 additions & 20 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
# Use Quest in your repository

Setup is manual for now; `quest init` will automate it. The binary carries the
skills and the quest guide, so your repository only pins a version and installs
small stubs that call it.
The binary carries the skills and the quest guide, so your repository only pins a
version and installs small stubs that call it.

## Install and pin the binary

Expand All @@ -17,24 +16,22 @@ manager your repository already uses:

The package requires Rust 1.91 or newer.

## Add the stubs and the reference line
## Initialize Quest

From your repository root:

```sh
for skill in $(quest skill | cut -d' ' -f1); do
mkdir -p .claude/skills/quest-$skill
quest skill --stub $skill > .claude/skills/quest-$skill/SKILL.md
done
echo /.scratch/ >> .gitignore
quest init
```

Check for existing skills with the same names first. Codex reads skills from
`.agents/skills/`; a directory symlink to `.claude/skills` shares one copy.
This writes a Quest stub for each shipped skill under `.claude/skills/`, links
`.agents/skills/` to the same tree when needed, adds `/.scratch/` to
`.gitignore`, creates `quest/README.md` when missing, and appends one line to
your root `AGENTS.md` or `CLAUDE.md` telling agents to run `quest guide` when
work mentions a quest.

Add one line to your root `AGENTS.md` or `CLAUDE.md`: when work mentions a quest,
run `quest guide` and follow it. Keep repository-specific rules there too; the
stubs never change between versions, so upgrading is only a new pin.
Init refuses to overwrite an existing same-named skill that is not a Quest stub.
Run it again safely: it only prints paths it changed.

Claude Code's direct `AGENTS.md` support starts at v2.1.277 and depends on the
session configuration. An existing project or ancestor `CLAUDE.md` can take
Expand All @@ -43,7 +40,7 @@ if the shared instructions do not load.

## Start a roadmap

Create `quest/README.md`:
If `quest init` created an empty root, edit `quest/README.md`:

```markdown
# Quests
Expand All @@ -53,9 +50,9 @@ Create `quest/README.md`:
What this project is working toward.
```

An empty root is valid. Invoke `/quest-plan` in Claude Code or `$quest-plan` in
Codex with an outcome you want to work toward. The skill helps settle the scope,
then creates milestones, quests, and dependencies. See the
Invoke `/quest-plan` in Claude Code or `$quest-plan` in Codex with an outcome you
want to work toward. The skill helps settle the scope, then creates milestones,
quests, and dependencies. See the
[CSV export example](../examples/export/quest/README.md) for a populated tree.

From your repository root, validate the result and look for ready work:
Expand All @@ -80,5 +77,12 @@ still need checking; `quest ready` does not look for them.

Upgrade by changing the pin; the stubs stay as they are. Before you remove Quest,
invoke `/quest-export` (or `$quest-export` in Codex) so active quests become
GitHub issues; `quest uninstall` is not implemented yet. Then remove the stubs,
the pin, and the reference line. Completed plans remain in Git history.
GitHub issues, then run:

```sh
quest uninstall
```

Uninstall removes only Quest stubs that still match, the reference line, and the
`/.scratch/` ignore entry. It never deletes your quest tree, and completed plans
remain in Git history. Then remove the pin.
1 change: 0 additions & 1 deletion quest/m0/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ ownership-manifest design:

## Required

- [Init and uninstall](/quest/m0/init.md) - `quest init` sets a repository up with stubs and a root reference; `quest uninstall` reverses it
- [Setup guide](/quest/m0/setup.md) - one line pasted into an agent installs, pins, and initializes Quest, or removes it
- [Release proof](/quest/m0/release-proof.md) - a fresh repository completes the whole lifecycle in CI, then v0.1.0 is tagged
- [Launch material](/quest/m0/launch.md) - README, quickstart, demo, comparison, and launch-post drafts
24 changes: 0 additions & 24 deletions quest/m0/init.md

This file was deleted.

1 change: 0 additions & 1 deletion quest/m0/release-proof.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,4 @@ user owned was lost. Then v0.1.0 is tagged and published.

## Required

- [Init and uninstall](/quest/m0/init.md) - the lifecycle under test
- [Setup guide](/quest/m0/setup.md) - the documented entry point
4 changes: 0 additions & 4 deletions quest/m0/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,3 @@ root instructions. The same file covers removal.
installer with the user's consent.
- Removal: run the export skill, `quest uninstall`, then drop the pin.
- Written for an agent to execute and a human to audit; keep it short.

## Required

- [Init and uninstall](/quest/m0/init.md) - the guide runs them
1 change: 1 addition & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ pub mod branch;
pub mod doc;
pub mod ready;
pub mod rules;
pub mod setup;
pub mod skills;

use std::path::{Path, PathBuf};
Expand Down
18 changes: 18 additions & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,12 @@ enum Command {
#[arg(long, requires = "name")]
stub: bool,
},

/// Install skill stubs, a quest root, and agent pointers for this repository.
Init,

/// Remove Quest stubs and markers installed by `quest init`.
Uninstall,
}

fn main() -> Result<ExitCode> {
Expand Down Expand Up @@ -145,5 +151,17 @@ fn main() -> Result<ExitCode> {
}
Ok(ExitCode::SUCCESS)
}
Command::Init => {
for path in quest::setup::init(&cli.root)? {
println!("{}", path.display());
}
Ok(ExitCode::SUCCESS)
}
Command::Uninstall => {
for path in quest::setup::uninstall(&cli.root)? {
println!("{}", path.display());
}
Ok(ExitCode::SUCCESS)
}
}
}
Loading
Loading