diff --git a/.claude/rules/prompting.md b/.claude/rules/prompting.md index e373e94..4615526 100644 --- a/.claude/rules/prompting.md +++ b/.claude/rules/prompting.md @@ -2,8 +2,7 @@ paths: - "**/AGENTS.md" - "CONTRIBUTING.md" - - "PROMPTING.md" - ".claude/skills/**" --- -Before editing this file, read `PROMPTING.md` at the repository root and apply it. +Before editing this file, follow Prompting in `quest context`. diff --git a/.claude/skills/quest-afk/SKILL.md b/.claude/skills/quest-afk/SKILL.md index dfb76ed..9f1c2c9 100644 --- a/.claude/skills/quest-afk/SKILL.md +++ b/.claude/skills/quest-afk/SKILL.md @@ -4,4 +4,4 @@ description: Keep quest work moving while the user is away, leaving every decisi --- Run `quest skill afk` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-audit/SKILL.md b/.claude/skills/quest-audit/SKILL.md index 9def5e6..208c116 100644 --- a/.claude/skills/quest-audit/SKILL.md +++ b/.claude/skills/quest-audit/SKILL.md @@ -4,4 +4,4 @@ description: Audit and fix outstanding quests for disagreements, conflicts, misa --- Run `quest skill audit` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-complete/SKILL.md b/.claude/skills/quest-complete/SKILL.md index 6c6bd4e..59f863c 100644 --- a/.claude/skills/quest-complete/SKILL.md +++ b/.claude/skills/quest-complete/SKILL.md @@ -1,7 +1,7 @@ --- name: quest-complete -description: Decide which open PRs to merge, then merge them in parallel. +description: Decide which open PRs to merge, then queue them. --- Run `quest skill complete` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-delete/SKILL.md b/.claude/skills/quest-delete/SKILL.md index 5d12f0c..8108538 100644 --- a/.claude/skills/quest-delete/SKILL.md +++ b/.claude/skills/quest-delete/SKILL.md @@ -4,4 +4,4 @@ description: Abandon a quest. --- Run `quest skill delete` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-export/SKILL.md b/.claude/skills/quest-export/SKILL.md index 7f52f47..743a129 100644 --- a/.claude/skills/quest-export/SKILL.md +++ b/.claude/skills/quest-export/SKILL.md @@ -4,4 +4,4 @@ description: Turn active quests into GitHub issues before leaving Quest. Use whe --- Run `quest skill export` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-grill/SKILL.md b/.claude/skills/quest-grill/SKILL.md new file mode 100644 index 0000000..e0eb6fb --- /dev/null +++ b/.claude/skills/quest-grill/SKILL.md @@ -0,0 +1,7 @@ +--- +name: quest-grill +description: Settle open decisions through an interactive interview with the user. Use when the user invokes /quest-grill or wants unsettled thinking challenged before action. +--- + +Run `quest skill grill` and follow its output. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-import/SKILL.md b/.claude/skills/quest-import/SKILL.md index fbd48cc..5de9725 100644 --- a/.claude/skills/quest-import/SKILL.md +++ b/.claude/skills/quest-import/SKILL.md @@ -4,4 +4,4 @@ description: Import GitHub issues as quests. --- Run `quest skill import` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-iterate/SKILL.md b/.claude/skills/quest-iterate/SKILL.md index ce46524..f0f1328 100644 --- a/.claude/skills/quest-iterate/SKILL.md +++ b/.claude/skills/quest-iterate/SKILL.md @@ -4,4 +4,4 @@ description: Iterate on an open PR to settle its open decisions, fix CI and revi --- Run `quest skill iterate` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-merge/SKILL.md b/.claude/skills/quest-merge/SKILL.md index b665c4f..156d4ab 100644 --- a/.claude/skills/quest-merge/SKILL.md +++ b/.claude/skills/quest-merge/SKILL.md @@ -1,7 +1,7 @@ --- name: quest-merge -description: Merge a quest once reviews and CI pass. +description: Queue a PR to land, running /quest-iterate first when it needs work. --- Run `quest skill merge` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-plan/SKILL.md b/.claude/skills/quest-plan/SKILL.md index 7b03073..d90febc 100644 --- a/.claude/skills/quest-plan/SKILL.md +++ b/.claude/skills/quest-plan/SKILL.md @@ -4,4 +4,4 @@ description: Scope and create quests through an interactive interview. Use when --- Run `quest skill plan` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-ready/SKILL.md b/.claude/skills/quest-ready/SKILL.md deleted file mode 100644 index 371bacf..0000000 --- a/.claude/skills/quest-ready/SKILL.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: quest-ready -description: Mark a draft PR ready for review, wait for an automated review, then decide whether to merge. ---- - -Run `quest skill ready` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-recurring/SKILL.md b/.claude/skills/quest-recurring/SKILL.md index 2995e5f..5b3a0fc 100644 --- a/.claude/skills/quest-recurring/SKILL.md +++ b/.claude/skills/quest-recurring/SKILL.md @@ -4,4 +4,4 @@ description: Plan a quest that repeats, such as a periodic audit or a release cu --- Run `quest skill recurring` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-review/SKILL.md b/.claude/skills/quest-review/SKILL.md new file mode 100644 index 0000000..41fd63b --- /dev/null +++ b/.claude/skills/quest-review/SKILL.md @@ -0,0 +1,7 @@ +--- +name: quest-review +description: Review a PR's branch locally with the other vendor's model, then mark it ready for review. +--- + +Run `quest skill review` and follow its output. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-spawn/SKILL.md b/.claude/skills/quest-spawn/SKILL.md index 21a9b33..3f65255 100644 --- a/.claude/skills/quest-spawn/SKILL.md +++ b/.claude/skills/quest-spawn/SKILL.md @@ -4,4 +4,4 @@ description: Start multiple quests in parallel. --- Run `quest skill spawn` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-start/SKILL.md b/.claude/skills/quest-start/SKILL.md index 5164b67..8929a00 100644 --- a/.claude/skills/quest-start/SKILL.md +++ b/.claude/skills/quest-start/SKILL.md @@ -4,4 +4,4 @@ description: Start work on a quest. --- Run `quest skill start` and follow its output. -If `quest` is not installed, follow https://github.com/kixelated/quest/blob/main/SETUP.md first. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/.claude/skills/quest-unblock/SKILL.md b/.claude/skills/quest-unblock/SKILL.md new file mode 100644 index 0000000..725d29b --- /dev/null +++ b/.claude/skills/quest-unblock/SKILL.md @@ -0,0 +1,7 @@ +--- +name: quest-unblock +description: Walk the maintainer through every quest and draft PR waiting on them, and clear waits that have resolved. +--- + +Run `quest skill unblock` and follow its output. +If `quest` is not installed, follow https://github.com/moq-dev/quest/blob/main/SETUP.md first. diff --git a/AGENTS.md b/AGENTS.md index 53baa75..42cf09e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,42 +1,15 @@ Read `README.md` for the three sites (moq.dev, moq.pub, moq.watch), setup, and the broadcast URL scheme. -# Required +# Rules -- Dig into the root cause and fix it at the source. Never work around a fixable bug with a retry, sleep, or timeout. -- Fail loud and early. Error on unsupported or malformed input rather than warn and continue. -- Reproduce bugs before fixing them. Land each fix with a regression test that fails without it, when one is easy. -- Keep the PR focused. No unrelated refactors, formatting churn, or drive-by changes; split when in doubt. -- Refactor aggressively for long-term maintainability, but re-evaluate the direction as you learn. -- Propose a course change, even suggest abandoning a PR, rather than finish a half-solution. -- When a decision is the maintainer's (design, copy, naming, scope), ask with 2-3 options and a recommendation. - Never deploy to any environment, including staging, without the user's explicit permission for that deployment. A coding task or quest does not authorize a deploy. - Protocol, player, and publisher fixes belong upstream in moq-dev/moq (`@moq/publish`, `@moq/watch`, ...). Fix them there first, then bump the `moq` submodule here; the `@moq/*` packages build from it. -- Never edit an `AGENTS.md`, `PROMPTING.md`, or skill without being prompted. Read `PROMPTING.md` before editing one or instructing other agents via context, memory, plans, or reviews. -- No em dashes in code, comments, or agent-written prose. -- Match the existing conventions, patterns, and naming when possible. -- Fix any outdated docs and comments inline; don't add a separate PR for it. -- Add the AI marker `(Written by )` to any posts on GitHub, excluding commit messages that contain `Co-Authored-By:` trailers. -- Any AI comments may be challenged, and not confused with human maintainers. - -# Guidelines - -- Comments should explain the non-obvious why, and never the history. -- Inline simple helpers. -- Question whether functionality is needed at all before adding it. -- Deleting code is better than adding code. -- Prefer the simple solution. -- New dependencies use the newest stable version. -- Say it once, in the fewest words that hold up. -- Suggest follow up sessions and quests when finished, interactively prompting the user. -- Prefer a quest over a GitHub issue for work needing durable scope. -- Try to do stuff asynchronously. ex. ask about follow-ups while checks run. -- If the core problem is addressed, ship it instead of spinning your wheels on meaningless revisions. # Development -PRs target `main`. Before starting, `git fetch origin` and set the upstream to the base branch. -`git stash` is one stack shared by every worktree; set work aside with a commit instead. -Use the Nix dev shell (direnv, or `nix develop --command just ...`) so tooling matches CI. +PRs target `main`. Run `just fix` before committing. `just check` alone is not verification: look at the change in the dev server (`just dev`, `just dev-pub`, or `just dev-watch`). Hand-drawn art ships as SVG: `just trace` the drawn PNG, compare the two, then commit only the SVG. -Quests: before starting work, run `quest guide` and follow it. The `quest` binary comes from the kixelated/quest flake input and serves the quest skills; change them upstream and bump the input. + +Quests: before any work, run `quest context` and follow it. +The `quest` binary comes from the moq-dev/quest flake input and serves the quest skills; change them upstream and bump the input. diff --git a/CLAUDE.md b/CLAUDE.md deleted file mode 120000 index 47dc3e3..0000000 --- a/CLAUDE.md +++ /dev/null @@ -1 +0,0 @@ -AGENTS.md \ No newline at end of file diff --git a/PROMPTING.md b/PROMPTING.md deleted file mode 100644 index 36f7956..0000000 --- a/PROMPTING.md +++ /dev/null @@ -1,45 +0,0 @@ -Read this before indirectly instructing agents. - -LLMs are not trained on how to write prompts. -They're trained on the outputs, not the inputs, and thus generate slop when chained. -So when you're drafting instructions for a future agent, please keep these rules in mind. - -# General - -**Do not over-prescribe**. -The facts will evolve over time. - -Focus on articulating the goal and/or root problems. -Keep things flexible so an agent can adjust as it digs deeper into the possible problems or solutions. - -You can (and should) include recommendations. -But focus on best-practices and things to look out for, not specific lines of code. -Mocking up an API makes a lot of sense but again, it should be flexible enough to adjust with the implementation. - -# Context - -This includes editing any `AGENTS.md`, `CONTRIBUTING.md`, etc. - -These files need to be light because they're loaded into every prompt. -More specific context (ex. per language or project) should exist in optional files/folders. - -These base prompts are meant to fix regular agent mistakes. -If there is a history of bad practices, or sub-optimal behavior, update `AGENTS.md` to steer away from them. -If you think a slight tweak to the base prompt would help, propose it. - -Focus on best practices and conventions. -Don't document the repository; the code and documentation can handle that. - -Before changing agent-instruction files, check the relevant official Claude/Codex guidance: - -- -- -- -- -- -- - -# Skills - -Skills are meant to avoid repeated duplicate prompts. -If the usage of a skill is unclear, offer to update to skill to reduce the ambiguity. diff --git a/flake.lock b/flake.lock index 615b6af..18d23d3 100644 --- a/flake.lock +++ b/flake.lock @@ -34,6 +34,22 @@ "type": "github" } }, + "nixpkgs-opencode": { + "locked": { + "lastModified": 1792116957, + "narHash": "sha256-EjZqHKObBfIOeHZnMRVV87HB3pPq/WBkmRJWyFxmZu8=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f20cd90e28fe0403873f473b29e42662cd86e8c4", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f20cd90e28fe0403873f473b29e42662cd86e8c4", + "type": "github" + } + }, "quest": { "inputs": { "flake-utils": [ @@ -41,20 +57,38 @@ ], "nixpkgs": [ "nixpkgs" - ] + ], + "nixpkgs-opencode": "nixpkgs-opencode", + "quest-pinned": "quest-pinned" + }, + "locked": { + "lastModified": 1793742983, + "narHash": "sha256-ihz9DSXQjTcv9ja066Ndiu5wTc8h6Jf71KFzjCKiPFM=", + "owner": "moq-dev", + "repo": "quest", + "rev": "4be350816f2a5c1157f799773ee1594f199fd9a7", + "type": "github" }, + "original": { + "owner": "moq-dev", + "repo": "quest", + "rev": "4be350816f2a5c1157f799773ee1594f199fd9a7", + "type": "github" + } + }, + "quest-pinned": { + "flake": false, "locked": { - "lastModified": 1792954329, - "narHash": "sha256-JfHwJJ1qKWckXj2PNb19FgVpfxcLFfpQjMF9dbFOLmM=", - "owner": "kixelated", + "lastModified": 1793721754, + "narHash": "sha256-pPsXWcv0LdYqW5bRYx7Av6urjcRTC3bGRWh8BGwO0Ug=", + "owner": "moq-dev", "repo": "quest", - "rev": "ed657ba9362a941b3be9bbea55120a3c5a90374c", + "rev": "2aa60a2d6676147314e725b0410882128eacea49", "type": "github" }, "original": { - "owner": "kixelated", + "owner": "moq-dev", "repo": "quest", - "rev": "ed657ba9362a941b3be9bbea55120a3c5a90374c", "type": "github" } }, diff --git a/flake.nix b/flake.nix index 05f21be..1d6b040 100644 --- a/flake.nix +++ b/flake.nix @@ -8,7 +8,7 @@ # The quest CLI, which also serves the quest guide and skills the stubs in # .claude/skills call. Bump the rev to upgrade them. quest = { - url = "github:kixelated/quest/ed657ba9362a941b3be9bbea55120a3c5a90374c"; + url = "github:moq-dev/quest/4be350816f2a5c1157f799773ee1594f199fd9a7"; inputs.nixpkgs.follows = "nixpkgs"; inputs.flake-utils.follows = "flake-utils"; };