@fernado03/zoo-flow 0.11.3 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/bin/zoo-flow.js +25 -25
  2. package/docs/architecture.md +380 -0
  3. package/docs/bloat-control.md +49 -0
  4. package/docs/command-design.md +38 -0
  5. package/docs/command-flow.md +133 -0
  6. package/docs/comparison.md +86 -0
  7. package/docs/context-packs.md +35 -0
  8. package/docs/dogfood/01-small-library.md +28 -0
  9. package/docs/dogfood/02-web-app.md +29 -0
  10. package/docs/dogfood/03-mixed-monorepo.md +29 -0
  11. package/docs/mode-rules.md +86 -0
  12. package/docs/npm-publishing.md +79 -0
  13. package/docs/out-of-scope/mainstream-issue-trackers-only.md +25 -0
  14. package/docs/out-of-scope/question-limits.md +18 -0
  15. package/docs/out-of-scope/setup-skill-verify-mode.md +15 -0
  16. package/docs/overview.md +61 -0
  17. package/docs/philosophy.md +73 -0
  18. package/docs/quality-scorecard.md +23 -0
  19. package/docs/skill-maintenance.md +32 -0
  20. package/docs/skills-index.md +64 -0
  21. package/docs/team-mode.md +46 -0
  22. package/docs/token-budget.md +22 -0
  23. package/docs/troubleshooting.md +288 -0
  24. package/examples/demo-transcripts/01-small-tweak.md +37 -0
  25. package/examples/demo-transcripts/02-unknown-bug-fix.md +37 -0
  26. package/examples/demo-transcripts/03-new-feature.md +37 -0
  27. package/examples/demo-transcripts/04-refactor.md +37 -0
  28. package/examples/demo-transcripts/05-review-and-verify.md +37 -0
  29. package/examples/feature-flow.md +117 -0
  30. package/examples/fix-flow.md +139 -0
  31. package/package.json +5 -2
  32. package/scripts/check-package-links.js +1 -1
  33. package/scripts/eval-routing.js +1 -1
  34. package/scripts/score-quality.js +3 -3
  35. package/scripts/test-doctor.js +5 -5
  36. package/templates/full/.roo/commands/{explore.md → zoo-explore.md} +18 -18
  37. package/templates/full/.roo/commands/{scaffold-context.md → zoo-scaffold-context.md} +16 -16
  38. package/templates/full/.roo/commands/{setup-matt-pocock-skills.md → zoo-setup-matt-pocock-skills.md} +7 -7
  39. package/templates/full/.roo/commands/{update-docs.md → zoo-update-docs.md} +22 -22
  40. package/templates/full/.roo/rules-custom-orchestrator/00-routing.md +22 -22
  41. package/templates/full/.roo/skills/engineering/commit-and-document/SKILL.md +163 -163
  42. package/templates/full/.roo/skills/engineering/diagnose/SKILL.md +3 -3
  43. package/templates/full/.roo/skills/engineering/grill-with-docs/SKILL.md +1 -1
  44. package/templates/full/.roo/skills/engineering/improve-codebase-architecture/SKILL.md +1 -1
  45. package/templates/full/.roo/skills/engineering/prototype/SKILL.md +47 -47
  46. package/templates/full/.roo/skills/engineering/review/SKILL.md +7 -7
  47. package/templates/full/.roo/skills/engineering/scaffold-context/SKILL.md +228 -228
  48. package/templates/full/.roo/skills/engineering/setup-matt-pocock-skills/SKILL.md +2 -2
  49. package/templates/full/.roo/skills/engineering/tdd/SKILL.md +1 -1
  50. package/templates/full/.roo/skills/engineering/to-issues/SKILL.md +2 -2
  51. package/templates/full/.roo/skills/engineering/to-prd/SKILL.md +66 -66
  52. package/templates/full/.roo/skills/engineering/triage/SKILL.md +2 -2
  53. package/templates/full/.roo/skills/engineering/tweak/SKILL.md +1 -1
  54. package/templates/full/.roo/skills/engineering/update-docs/SKILL.md +76 -76
  55. package/templates/full/.roo/skills/engineering/verify/SKILL.md +2 -2
  56. package/templates/full/.roo/skills/engineering/zoom-out/SKILL.md +1 -1
  57. package/templates/full/.roo/skills/productivity/caveman/SKILL.md +1 -1
  58. package/templates/full/.roo/skills/productivity/teach/SKILL.md +119 -119
  59. package/templates/full/.roomodes +3 -3
  60. package/tests/fixtures/doctor/helper-not-permitted/fixture.json +1 -1
  61. /package/templates/claude-code/.claude/commands/{caveman.md → zoo-caveman.md} +0 -0
  62. /package/templates/claude-code/.claude/commands/{commit-and-document.md → zoo-commit-and-document.md} +0 -0
  63. /package/templates/claude-code/.claude/commands/{diagnose.md → zoo-diagnose.md} +0 -0
  64. /package/templates/claude-code/.claude/commands/{explore.md → zoo-explore.md} +0 -0
  65. /package/templates/claude-code/.claude/commands/{feature.md → zoo-feature.md} +0 -0
  66. /package/templates/claude-code/.claude/commands/{fix.md → zoo-fix.md} +0 -0
  67. /package/templates/claude-code/.claude/commands/{grill-me.md → zoo-grill-me.md} +0 -0
  68. /package/templates/claude-code/.claude/commands/{grill-with-docs.md → zoo-grill-with-docs.md} +0 -0
  69. /package/templates/claude-code/.claude/commands/{handoff.md → zoo-handoff.md} +0 -0
  70. /package/templates/claude-code/.claude/commands/{improve-codebase-architecture.md → zoo-improve-codebase-architecture.md} +0 -0
  71. /package/templates/claude-code/.claude/commands/{prototype.md → zoo-prototype.md} +0 -0
  72. /package/templates/claude-code/.claude/commands/{refactor.md → zoo-refactor.md} +0 -0
  73. /package/templates/claude-code/.claude/commands/{review.md → zoo-review.md} +0 -0
  74. /package/templates/claude-code/.claude/commands/{scaffold-context.md → zoo-scaffold-context.md} +0 -0
  75. /package/templates/claude-code/.claude/commands/{setup-matt-pocock-skills.md → zoo-setup-matt-pocock-skills.md} +0 -0
  76. /package/templates/claude-code/.claude/commands/{tdd.md → zoo-tdd.md} +0 -0
  77. /package/templates/claude-code/.claude/commands/{teach.md → zoo-teach.md} +0 -0
  78. /package/templates/claude-code/.claude/commands/{to-issues.md → zoo-to-issues.md} +0 -0
  79. /package/templates/claude-code/.claude/commands/{to-prd.md → zoo-to-prd.md} +0 -0
  80. /package/templates/claude-code/.claude/commands/{triage.md → zoo-triage.md} +0 -0
  81. /package/templates/claude-code/.claude/commands/{tweak.md → zoo-tweak.md} +0 -0
  82. /package/templates/claude-code/.claude/commands/{update-docs.md → zoo-update-docs.md} +0 -0
  83. /package/templates/claude-code/.claude/commands/{verify.md → zoo-verify.md} +0 -0
  84. /package/templates/claude-code/.claude/commands/{write-a-skill.md → zoo-write-a-skill.md} +0 -0
  85. /package/templates/claude-code/.claude/commands/{zoom-out.md → zoo-zoom-out.md} +0 -0
  86. /package/templates/full/.roo/commands/{caveman.md → zoo-caveman.md} +0 -0
  87. /package/templates/full/.roo/commands/{commit-and-document.md → zoo-commit-and-document.md} +0 -0
  88. /package/templates/full/.roo/commands/{diagnose.md → zoo-diagnose.md} +0 -0
  89. /package/templates/full/.roo/commands/{feature.md → zoo-feature.md} +0 -0
  90. /package/templates/full/.roo/commands/{fix.md → zoo-fix.md} +0 -0
  91. /package/templates/full/.roo/commands/{grill-me.md → zoo-grill-me.md} +0 -0
  92. /package/templates/full/.roo/commands/{grill-with-docs.md → zoo-grill-with-docs.md} +0 -0
  93. /package/templates/full/.roo/commands/{handoff.md → zoo-handoff.md} +0 -0
  94. /package/templates/full/.roo/commands/{improve-codebase-architecture.md → zoo-improve-codebase-architecture.md} +0 -0
  95. /package/templates/full/.roo/commands/{prototype.md → zoo-prototype.md} +0 -0
  96. /package/templates/full/.roo/commands/{refactor.md → zoo-refactor.md} +0 -0
  97. /package/templates/full/.roo/commands/{review.md → zoo-review.md} +0 -0
  98. /package/templates/full/.roo/commands/{tdd.md → zoo-tdd.md} +0 -0
  99. /package/templates/full/.roo/commands/{teach.md → zoo-teach.md} +0 -0
  100. /package/templates/full/.roo/commands/{to-issues.md → zoo-to-issues.md} +0 -0
  101. /package/templates/full/.roo/commands/{to-prd.md → zoo-to-prd.md} +0 -0
  102. /package/templates/full/.roo/commands/{triage.md → zoo-triage.md} +0 -0
  103. /package/templates/full/.roo/commands/{tweak.md → zoo-tweak.md} +0 -0
  104. /package/templates/full/.roo/commands/{verify.md → zoo-verify.md} +0 -0
  105. /package/templates/full/.roo/commands/{write-a-skill.md → zoo-write-a-skill.md} +0 -0
  106. /package/templates/full/.roo/commands/{zoom-out.md → zoo-zoom-out.md} +0 -0
@@ -0,0 +1,86 @@
1
+ # Comparison and positioning
2
+
3
+ A few projects in the agentic-coding space share vocabulary with Zoo
4
+ Flow — "skills", "agents", "commands". They are doing different things.
5
+ This page is meant to make the differences clear so you can pick the
6
+ right tool for the job.
7
+
8
+ ## Short version
9
+
10
+ - **Superpowers** is a broad methodology and skills library. The center
11
+ of gravity is the *skills*: a large, well-curated collection of named
12
+ techniques the agent can pull in.
13
+ - **ECC (Extended Coding Companion / "extended coding context")** is a
14
+ large agent harness. The center of gravity is the *runtime*: a rich
15
+ agent loop, memory, and tooling stack.
16
+ - **Zoo Flow** is a Zoo Code-native workflow control plane. It focuses
17
+ on mode-safe delegation, slash-command routing, and path-safe skill
18
+ loading. The center of gravity is the
19
+ *contract*: three modes, a routing matrix, a command protocol, and a
20
+ path-safety guarantee.
21
+
22
+ These projects are complementary more than competitive. You can run a
23
+ broad skills library inside Zoo Flow's three-mode contract, and you can
24
+ plug Zoo Flow's commands into a richer harness if you have one.
25
+
26
+ ## What Zoo Flow is not
27
+
28
+ - It is not a replacement for a methodology like Superpowers. If you
29
+ want a long, opinionated guide to *how to think* about agentic
30
+ coding, look there.
31
+ - It is not a runtime. Zoo Flow runs inside Zoo Code; it does not ship
32
+ its own agent loop, memory store, or tool registry.
33
+ - It is not a giant skills pack. The bundled skills are a starting
34
+ point. The control plane is the product.
35
+
36
+ ## What Zoo Flow is
37
+
38
+ - A `.roomodes` file that defines three custom modes with deliberate
39
+ tool-group boundaries.
40
+ - A handful of always-on rules: path safety, command protocol,
41
+ three-failure guardrail, manual reply safety, and context economy.
42
+ - A directory layout for slash commands and on-demand skills.
43
+
44
+ If you only adopt one piece of Zoo Flow, adopt the path-safety rule and
45
+ the command protocol. Those two files alone fix most of the "agent
46
+ hallucinated a path" problems.
47
+
48
+ ## When to pick Zoo Flow
49
+
50
+ - You are using Zoo Code as your primary host.
51
+ - You want a small, validated control plane more than a big skill set.
52
+ - You care about the mode boundary between planning and implementation.
53
+ - You want explicit human-in-the-loop checkpoints in multi-phase flows
54
+ like `/fix` and `/feature`.
55
+
56
+ ## When to pick something else
57
+
58
+ - You want a comprehensive methodology and a broad skill set out of the
59
+ box. Superpowers and similar projects are a better fit.
60
+ - You are not on Zoo Code and you do not plan to be. Zoo Flow leans on
61
+ `customModes`, `run_slash_command`, `new_task`, and `switch_mode`
62
+ semantics from that host.
63
+ - You want a full agent runtime with its own loop and memory layer.
64
+ ECC-style harnesses are aimed at that.
65
+
66
+ ## Working alongside other projects
67
+
68
+ Zoo Flow plays well with broader skills libraries. The skills under
69
+ `templates/full/.roo/skills/` follow a standard `SKILL.md` format and
70
+ are loaded by command. If you want to bring in a skill from another
71
+ project, drop it under the right bucket, add a one-line entry to the
72
+ bucket `README.md` and to `docs/skills-index.md`, and reference it from
73
+ a command file. The control plane does not care where the skill came
74
+ from.
75
+
76
+ The opposite direction works too: if you want to take just the modes
77
+ and the command protocol into a different setup, that is two files
78
+ (`.roomodes` and `01-command-protocol.md`) plus the path-safety rule
79
+ (`00-paths.md`).
80
+
81
+ ## Respect
82
+
83
+ The projects mentioned here are the work of people who care about this
84
+ problem space. Zoo Flow exists because their work raised the bar.
85
+ Where Zoo Flow disagrees with them, it disagrees on tradeoffs, not on
86
+ intent.
@@ -0,0 +1,35 @@
1
+ # Context Packs
2
+
3
+ Context packs are optional reusable groups of documentation, rules,
4
+ commands, and skills that can be layered on top of Zoo Flow for
5
+ specific project needs.
6
+
7
+ ## When to use
8
+
9
+ - A project needs specialized workflow patterns (e.g., writing
10
+ workflows, database migrations, CI/CD).
11
+ - A team wants to share a common set of conventions across repos.
12
+ - A user wants optional extras without modifying core Zoo Flow files.
13
+
14
+ ## How it works
15
+
16
+ Context packs live under `.roo/templates/context-packs/`. Each pack is a
17
+ directory with its own `manifest.json` declaring what it adds.
18
+
19
+ The `/scaffold-context` command detects candidate packs based on project
20
+ shape and offers them as optional additions.
21
+
22
+ ## Built-in candidate packs
23
+
24
+ These are templates evaluated by `/scaffold-context` but never applied
25
+ without user confirmation:
26
+
27
+ - **Writing patterns** — shapes, beats, fragments for content projects
28
+ - **ADR starter** — minimal ADR template and convention
29
+ - **Setup docs** — setup conventions beyond the boiletplate
30
+
31
+ ## Quality gate
32
+
33
+ Context packs must follow the same quality rules as core Zoo Flow:
34
+ canonical `Skill:` markers, correct mode declarations, no built-in
35
+ delegation. They are validated by `doctor`.
@@ -0,0 +1,28 @@
1
+ # Dogfood Report: Small Library
2
+
3
+ **Date:** YYYY-MM-DD
4
+ **Project shape:** library (npm package, ~2K LOC, 10 exports)
5
+ **Zoo Flow version:** 0.7.0
6
+
7
+ ## Commands tested
8
+
9
+ - `/scaffold-context` — should detect library shape, propose 5-8 domain terms, 0-1 ADRs
10
+ - `/verify` — should detect package.json, run npm test
11
+ - `/commit-and-document` — should stage, commit, write journal entry
12
+
13
+ ## What Zoo Flow routed correctly
14
+
15
+
16
+ ## What it over-read
17
+
18
+
19
+ ## What it tried to create unnecessarily
20
+
21
+
22
+ ## Token budget impact
23
+
24
+
25
+ ## Fixes made to Zoo Flow
26
+
27
+
28
+ ## Remaining risk
@@ -0,0 +1,29 @@
1
+ # Dogfood Report: Web App
2
+
3
+ **Date:** YYYY-MM-DD
4
+ **Project shape:** web app (Next.js, auth, payments, ~20K LOC)
5
+ **Zoo Flow version:** 0.7.0
6
+
7
+ ## Commands tested
8
+
9
+ - `/feature` — new payment flow with phase gates
10
+ - `/fix` — checkout crash diagnosis
11
+ - `/review` — branch review with Security/Risk axis
12
+ - `/verify` — targeted test run
13
+
14
+ ## What Zoo Flow routed correctly
15
+
16
+
17
+ ## What it over-read
18
+
19
+
20
+ ## What it tried to create unnecessarily
21
+
22
+
23
+ ## Token budget impact
24
+
25
+
26
+ ## Fixes made to Zoo Flow
27
+
28
+
29
+ ## Remaining risk
@@ -0,0 +1,29 @@
1
+ # Dogfood Report: Mixed Monorepo
2
+
3
+ **Date:** YYYY-MM-DD
4
+ **Project shape:** monorepo (apps/web, services/api, workers/billing, packages/core)
5
+ **Zoo Flow version:** 0.7.0
6
+
7
+ ## Commands tested
8
+
9
+ - `/scaffold-context` — should detect monorepo shape, propose MONOREPO_MAP.md as recommended
10
+ - `/explore` — should map unfamiliar sub-package
11
+ - `/refactor` — should plan cross-package design change
12
+ - `/tweak` — should handle localized change in one package
13
+
14
+ ## What Zoo Flow routed correctly
15
+
16
+
17
+ ## What it over-read
18
+
19
+
20
+ ## What it tried to create unnecessarily
21
+
22
+
23
+ ## Token budget impact
24
+
25
+
26
+ ## Fixes made to Zoo Flow
27
+
28
+
29
+ ## Remaining risk
@@ -0,0 +1,86 @@
1
+ # Mode-specific rules
2
+
3
+ Zoo Flow uses three rule scopes, each loaded by Zoo Code automatically:
4
+
5
+ - `.roo/rules/` — loaded for **every** mode, every turn.
6
+ - `.roo/rules-{modeSlug}/` — loaded **only** when that mode is active.
7
+ - `.roo/skills/` — **on-demand**, loaded by slash commands. Never auto-loaded.
8
+
9
+ > Zoo Flow uses the preferred `.roo/rules-{modeSlug}/` directory form
10
+ > only. Legacy single-file fallbacks such as `.roorules-{modeSlug}` and
11
+ > `.clinerules-{modeSlug}` are not used by this template.
12
+
13
+ Mode-specific behavior lives in dedicated folders under `.roo/`:
14
+
15
+ - `.roo/rules-custom-orchestrator/` — routing rules and the delegation
16
+ message contract for the orchestrator.
17
+ - `.roo/rules-system-architect/` — scope, feature-prototype handoff, and
18
+ completion rules for the architect.
19
+ - `.roo/rules-code-tweaker/` — scope and completion rules for the
20
+ tweaker, including the git hard stop.
21
+
22
+ Files inside these folders are short on purpose. They are concatenated
23
+ into the model's context every turn the matching mode is active, so each
24
+ extra paragraph costs tokens for the entire session.
25
+
26
+ ## What belongs in a mode rules folder
27
+
28
+ - Standing instructions specific to that mode's job (e.g. "the architect
29
+ cannot edit application source").
30
+ - Short hard stops (e.g. "halt for explicit user approval before
31
+ publishing issues").
32
+ - Pointers to global rules the mode must follow.
33
+
34
+ ## What does NOT belong here
35
+
36
+ - **On-demand skills.** Those live under `.roo/skills/` and are loaded
37
+ explicitly by slash commands.
38
+ - **Workspace-wide always-on rules** that apply to every mode. Those
39
+ stay in `.roo/rules/`.
40
+ - **Long policy or knowledge files.** If a policy is long enough to need
41
+ multiple paragraphs of explanation, write it under `docs/` and
42
+ reference it from the rule. The mode rule should be a short reminder,
43
+ not a full essay.
44
+ - **Duplicates of the global command protocol or path safety.** Those
45
+ live in `.roo/rules/01-command-protocol.md` and
46
+ `.roo/rules/00-paths.md` respectively.
47
+
48
+ ## Why `.roomodes` is intentionally minimal
49
+
50
+ Each `customInstructions` block in `.roomodes` is loaded with the mode
51
+ metadata. Putting detailed behavior there duplicates what already lives
52
+ in `.roo/rules-{modeSlug}/`, costs tokens twice, and creates two places
53
+ to keep in sync.
54
+
55
+ The current `.roomodes` keeps four things per mode:
56
+
57
+ 1. `slug`, `name`, `roleDefinition`, `whenToUse`, `description`,
58
+ `groups` — these can't move.
59
+ 2. A short `customInstructions` that:
60
+ - points at the matching `.roo/rules-{modeSlug}/` folder,
61
+ - lists permitted routed commands and permitted direct helper commands
62
+ (or the routing matrix, for the orchestrator),
63
+ - references the global rules it calls out directly (`00-paths.md`,
64
+ `01-command-protocol.md`, `03-manual-reply-protocol.md`). Other
65
+ global rules, such as `02-three-failure-rule.md` and
66
+ `04-context-economy.md`, are loaded automatically from
67
+ `.roo/rules/`.
68
+ - says what to do if an unsupported command is assigned.
69
+
70
+ Documented helper commands must have `mode:` frontmatter unless they are
71
+ explicitly modeless utilities such as `/caveman`.
72
+
73
+ Everything else lives in the mode rules folder.
74
+
75
+ ## Related directories
76
+
77
+ - [`.roo/rules/`](../templates/full/.roo/rules/) — always-on rules for **all** modes.
78
+ - [`.roo/skills/`](../templates/full/.roo/skills/) — on-demand skills, invoked by slash commands.
79
+ - [`.roo/commands/`](../templates/full/.roo/commands/) — slash command definitions
80
+ (e.g. `/tweak`, `/fix`).
81
+ - [`.roo/rules-custom-orchestrator/`](../templates/full/.roo/rules-custom-orchestrator/) —
82
+ router-only rules.
83
+ - [`.roo/rules-system-architect/`](../templates/full/.roo/rules-system-architect/) —
84
+ architect rules.
85
+ - [`.roo/rules-code-tweaker/`](../templates/full/.roo/rules-code-tweaker/) —
86
+ tweaker rules.
@@ -0,0 +1,79 @@
1
+ # npm Publishing
2
+
3
+ Zoo Flow is published as a CLI installer.
4
+
5
+ ## Package name
6
+
7
+ ```text
8
+ @fernado03/zoo-flow
9
+ ```
10
+
11
+ ## Local validation
12
+
13
+ ```bash
14
+ npm run release:check
15
+ ```
16
+
17
+ ## Publish
18
+
19
+ ```bash
20
+ npm login
21
+ npm publish --access public
22
+ ```
23
+
24
+ ## Test install after publish
25
+
26
+ From a separate test project:
27
+
28
+ ```bash
29
+ npx @fernado03/zoo-flow@latest init
30
+ ```
31
+
32
+ If the project already has `.roomodes` or `.roo/`, test:
33
+
34
+ ```bash
35
+ npx @fernado03/zoo-flow@latest init --force
36
+ ```
37
+
38
+ ## Test update after publish
39
+
40
+ From a temporary directory:
41
+
42
+ ```bash
43
+ tmpdir="$(mktemp -d)"
44
+ cd "$tmpdir"
45
+
46
+ npx @fernado03/zoo-flow@latest init
47
+ npx @fernado03/zoo-flow@latest update --dry-run
48
+ npx @fernado03/zoo-flow@latest update
49
+
50
+ test -f .roomodes
51
+ test -d .roo
52
+ test -d .zoo-flow-backup
53
+ ```
54
+
55
+ ## What ships in the package
56
+
57
+ The `files` field in `package.json` controls what npm publishes:
58
+
59
+ - `bin/` — the CLI entry point
60
+ - `scripts/` — validation and release checks
61
+ - `templates/` — the runtime template (`.roomodes` and `.roo/`)
62
+ - `docs/` — product documentation linked from the README
63
+ - `examples/` — worked examples linked from the README
64
+ - `README.md`
65
+ - `LICENSE`
66
+
67
+ `node_modules/`, `.git/`, `.scratch/`, backups, and generated tarballs are not shipped.
68
+
69
+ ## Versioning
70
+
71
+ Bump `version` in `package.json` before each publish, following
72
+ [Semantic Versioning](https://semver.org/):
73
+
74
+ - patch: bug fixes in the CLI or template content
75
+ - minor: new commands, new modes, new skills
76
+ - major: breaking changes to mode slugs, command names, or routing
77
+
78
+ Update `CHANGELOG.md` under `## [Unreleased]` with the change, then
79
+ move it under a new versioned section when you publish.
@@ -0,0 +1,25 @@
1
+ # Issue tracker integrations are limited to mainstream tools
2
+
3
+ `setup-matt-pocock-skills` only offers first-class support for **mainstream** issue trackers. Requests to add support for niche, new, or single-vendor experimental trackers are out of scope.
4
+
5
+ ## Why this is out of scope
6
+
7
+ Every issue-tracker backend hard-codes a CLI shape into the skills (commands, flags, output parsing). Each new backend is permanent maintenance surface — it has to keep working as the tool's CLI evolves, and it has to keep being tested against `/to-prd`, `/to-issues`, `/triage`, and friends. That cost is only worth paying for trackers a meaningful fraction of users actually have.
8
+
9
+ "Mainstream" is a judgment call, not a numeric bar:
10
+
11
+ - GitHub, GitLab, and Backlog.md are the kind of tools we'd consider mainstream — broadly known, widely used, well past the experimental phase.
12
+ - A brand-new agent-focused tool with a few hundred GitHub stars is not, no matter how interesting the design.
13
+
14
+ Stars, age, and download counts are useful signals when making the call but none of them is the rule. The rule is: would a typical engineer recognise this tool and have plausibly chosen it for their team?
15
+
16
+ The escape hatches for non-mainstream trackers already exist:
17
+
18
+ - `local markdown` for lightweight in-repo tracking.
19
+ - `other/custom` for users who want to wire something up themselves.
20
+
21
+ Neither requires the core skills to know about the specific tool.
22
+
23
+ ## Prior requests
24
+
25
+ - #99 — "Add dex as an issue tracker backend" (dex was ~3 months old and ~300 stars at the time of the request)
@@ -0,0 +1,18 @@
1
+ # Hard limits on the number of questions during grilling
2
+
3
+ The `/grill-me` skill (and grilling sessions inside other skills) does not enforce a maximum number of questions. Requests to add a configurable cap or hard ceiling are out of scope.
4
+
5
+ ## Why this is out of scope
6
+
7
+ Grilling is intentionally open-ended. The point is to keep digging until each branch of the decision tree is resolved — some plans need three questions, some need fifty. A fixed cap would either cut off useful exploration on hard problems or feel arbitrary on easy ones.
8
+
9
+ If a session feels too long, the right escape hatches already exist:
10
+
11
+ - The user can stop the session at any time and accept the current state of the plan.
12
+ - The user can tell the model to wrap up, summarise, and move on — natural-language steering is the intended control surface, not a numeric limit.
13
+
14
+ Adding a hard cap would also conflate two different failure modes: a model that asks too many questions because the plan is genuinely under-specified (working as intended) vs. a model that asks redundant or low-value questions (a prompt-quality issue, not a quantity issue). The fix for the latter belongs in the skill prompt, not in a counter.
15
+
16
+ ## Prior requests
17
+
18
+ - #44 — "Codex just asked me 200 questions"
@@ -0,0 +1,15 @@
1
+ # Verify/Check Mode for `setup-matt-pocock-skills`
2
+
3
+ This project will not add a dedicated verify/check mode (or a separate verify skill) for `setup-matt-pocock-skills`.
4
+
5
+ ## Why this is out of scope
6
+
7
+ A second skill — or a `--verify` flag — for checking whether `docs/agents/*.md` artifacts still match the seed-template schema would duplicate work the existing setup skill already handles in conversation.
8
+
9
+ The intended workflow is: **run `/setup-matt-pocock-skills` and tell it to verify your current setup.** The skill is prompt-driven, so the maintainer can scope it to a verification pass ("don't rewrite anything, just check my existing files against the current seed templates and report drift") without needing a separate code path. Adding a flag or a sibling skill would split the surface area of a feature that's already expressible through the natural-language entry point.
10
+
11
+ Keeping configuration management to a single skill also avoids the maintenance cost of two skills drifting from each other when seed templates evolve.
12
+
13
+ ## Prior requests
14
+
15
+ - #106 — Feature request: verify/check mode for setup-matt-pocock-skills
@@ -0,0 +1,61 @@
1
+ # Overview
2
+
3
+ Zoo Flow is a small, opinionated template that turns
4
+ [Zoo Code](https://docs.zoocode.dev/) into a predictable mode +
5
+ command + skill orchestrator. It defines three modes, a fixed routing
6
+ matrix, a command protocol, and path-safety rules. Drop it into a
7
+ workspace and your AI assistant stops freelancing.
8
+
9
+ ## Why this exists
10
+
11
+ Out of the box, AI coding assistants tend to skip planning when you
12
+ want planning, plan when you want a tweak, and quietly invent file
13
+ paths that do not exist. Adding a pile of skills makes it worse.
14
+
15
+ Zoo Flow takes a different bet:
16
+
17
+ - A **router mode** chooses the workflow.
18
+ - An **architect mode** plans, diagnoses, and triages — and cannot
19
+ edit source code.
20
+ - A **tweaker mode** implements, runs tests, prototypes, and commits —
21
+ only when explicitly approved.
22
+ - A small set of **slash commands** acts as the public API between
23
+ you and the modes. Free-form requests go through the orchestrator;
24
+ typing a slash command jumps straight to its configured mode.
25
+ - A few **always-on rules** keep the path layout honest and stop
26
+ skill paths from drifting under `.roo/rules/`.
27
+
28
+ Everything else is optional. The skills bundled in the template are a
29
+ sensible starting point, not the point of the project.
30
+
31
+ ## Core workflow
32
+
33
+ ```mermaid
34
+ flowchart TD
35
+ User([User])
36
+ Orchestrator[🪃 custom-orchestrator<br/>router only]
37
+ Architect[🏗️ system-architect<br/>plan / diagnose / triage<br/>Markdown edits only]
38
+ Tweaker[⚡ code-tweaker<br/>implement / test / prototype / commit]
39
+
40
+ User -- "free-form request" --> Orchestrator
41
+ Orchestrator -- "proposes /command, waits" --> User
42
+ User -- "/tweak, /tdd, /update-docs,<br/>/commit-and-document, /prototype, /verify" --> Orchestrator
43
+ User -- "/fix, /feature, /refactor,<br/>/explore, /triage, /review" --> Orchestrator
44
+
45
+ Orchestrator -- "new_task" --> Tweaker
46
+ Orchestrator -- "new_task" --> Architect
47
+
48
+ Architect -- "switch_mode (same window)" --> Tweaker
49
+ Tweaker -- "switch_mode (same window)" --> Architect
50
+
51
+ Tweaker -- "attempt_completion" --> Orchestrator
52
+ Architect -- "attempt_completion" --> Orchestrator
53
+ Orchestrator -- "summarize, HALT" --> User
54
+ ```
55
+
56
+ For the deeper "why", see [`philosophy.md`](philosophy.md). For the
57
+ component-level reference, see [`architecture.md`](architecture.md).
58
+
59
+ For non-trivial work, the normal endgame is implementation, then
60
+ `/verify`, then `/review`, then `/commit-and-document`. These are
61
+ recommendations only; Zoo Flow does not auto-run follow-up commands.
@@ -0,0 +1,73 @@
1
+ # Philosophy
2
+
3
+ Zoo Flow is built around a small number of opinions. They are listed here so
4
+ you can decide whether the template is a good fit before you adopt it.
5
+
6
+ ## 1. The router should not write code
7
+
8
+ Most failure modes in agentic coding come from a single agent trying to do
9
+ three jobs at once: deciding what to do, planning how to do it, and doing
10
+ it. Zoo Flow splits those into three modes and refuses to collapse them.
11
+
12
+ - `custom-orchestrator` decides **what** to do, by mapping a request to a
13
+ command from a fixed routing matrix.
14
+ - `system-architect` decides **how** to do it, in Markdown.
15
+ - `code-tweaker` does it.
16
+
17
+ The orchestrator has no `read`, `edit`, `command`, or `mcp` tool groups.
18
+ It cannot freelance into implementation work even if it wants to.
19
+
20
+ ## 2. Slash commands are the public API
21
+
22
+ Free-form requests are fine, but the moment work starts, it goes through a
23
+ slash command. Commands are the only way the orchestrator delegates and
24
+ the only way modes know which workflow they are running.
25
+
26
+ This has two payoffs:
27
+
28
+ - A command name in chat is a checkable artifact. You can grep your history
29
+ for `/fix` or `/feature` and know exactly which workflow ran.
30
+ - Each command file is a single, readable place to change behavior. No
31
+ hunting through prompts.
32
+
33
+ Commands live at `templates/full/.roo/commands/{command}.md` and are loaded
34
+ through the protocol described in
35
+ [`architecture.md`](architecture.md#command-protocol).
36
+
37
+ ## 3. Path safety beats cleverness
38
+
39
+ Skills always live at `templates/full/.roo/skills/{bucket}/{skill}/SKILL.md`.
40
+ Never under `.roo/rules/`. Never relative to the command file. Never invented
41
+ by the model.
42
+
43
+ This is enforced by `00-paths.md`, which ships as an always-on rule. If a
44
+ skill path drifts, the rule catches it. The cost is one rule file. The
45
+ benefit is no more `ENOENT` rabbit holes.
46
+
47
+ ## 4. Same-window switches for tight loops, `new_task` for clean boundaries
48
+
49
+ There are two delegation primitives in Zoo Code:
50
+
51
+ - `switch_mode` keeps the same task window and hands the keyboard to a
52
+ different mode. Cheap. Good for `/fix` going architect → tweaker → architect.
53
+ - `new_task` opens a delegated subtask with its own window. Expensive. Good
54
+ for orchestrator handing real work to architect or tweaker.
55
+
56
+ Zoo Flow uses both, deliberately. The orchestrator only ever uses
57
+ `new_task`. Modes only ever use `switch_mode`. They never cross.
58
+
59
+ ## 5. HITL hard stops are features
60
+
61
+ Several commands force a halt. `/feature` halts after sharpening, after
62
+ prototype, after PRD, after issues. `/fix` halts after diagnosis. The git
63
+ flow halts before commit. These are not friction; they are the points
64
+ where a human review is cheaper than a rollback.
65
+
66
+ ## 6. The skill set is replaceable
67
+
68
+ The bundled skills are a starting point. You should expect to delete some,
69
+ add some, and rename a bucket. The control plane — modes, commands, rules —
70
+ is the part that should be stable.
71
+
72
+ If a skill cannot be invoked through a command, it does not belong in the
73
+ template.
@@ -0,0 +1,23 @@
1
+ # Quality Scorecard
2
+
3
+ Zoo Flow uses a deterministic rule-based quality scorecard to gate releases. Every
4
+ category must score >= 9.5/10 for `release:check` to pass.
5
+
6
+ ## Categories
7
+
8
+ | Category | Weight | What it measures |
9
+ |---|---|---|
10
+ | command_integrity | 20% | Every command has a correct `mode:` declaration matching the command-policy map. Required rules exist. Routing table is in sync. |
11
+ | skill_quality | 20% | Skills use canonical `Skill:` marker. Referenced skills exist. Skills have purpose, steps, and output format. No thin wrappers. Bucket layout. |
12
+ | validation_depth | 20% | Doctor validates files, skill refs, mode slugs, built-in bans, .roomodes permission, routing rows, old-doc leakage, ADR path consistency. |
13
+ | token_economy | 10% | Context-economy rule exists. Domain-doc read gate. Completion evidence format. Risk-based routing. |
14
+ | verification | 10% | Verify command + skill with evidence output and no-claim-unless-run rule. Fixture tests. Routing evals. Package-link check. |
15
+ | review_process | 10% | Review command + skill with standards/spec/Security-Risk axes. Severity-ordered findings. Canonical result line. |
16
+ | release_readiness | 10% | `release:check` runs all validation scripts. Score thresholds enforced. `npm pack --dry-run` passes. |
17
+
18
+ ## How scoring works
19
+
20
+ - Each category defines specific checks (see `quality/scorecard.json`).
21
+ - Each check is pass/fail. Missing items reduce the category score toward 0.
22
+ - The weighted composite score must be >= 9.5 for `npm run release:check` to pass.
23
+ - Scoring is fully deterministic — no AI grading, no subjective evaluation.
@@ -0,0 +1,32 @@
1
+ # Skill maintenance policy
2
+
3
+ This is repo-maintenance policy for the bundled skill set. It does not
4
+ need to be in the model's context on every turn, so it lives in `docs/`
5
+ rather than `.roo/rules/`. The runtime path-safety contract is in
6
+ [`templates/full/.roo/rules/00-paths.md`](../templates/full/.roo/rules/00-paths.md).
7
+
8
+ ## Skill bucket layout
9
+
10
+ Skills are organized into bucket folders under `.roo/skills/`:
11
+
12
+ - `.roo/skills/engineering/` — daily code work
13
+ - `.roo/skills/productivity/` — daily non-code workflow tools
14
+ - `.roo/skills/misc/` — kept around but rarely used
15
+ - `.roo/skills/personal/` — tied to a maintainer's setup, not promoted
16
+ - `.roo/skills/in-progress/` — drafts not yet ready to ship
17
+ - `.roo/skills/deprecated/` — no longer used
18
+
19
+ ## Promotion rules
20
+
21
+ Skills in `.roo/skills/personal/`, `.roo/skills/in-progress/`, and
22
+ `.roo/skills/deprecated/` must not appear in the top-level `README.md`
23
+ as promoted skills. They may appear in internal indexes only when
24
+ clearly marked as personal, in-progress, or deprecated.
25
+
26
+ Every skill in `.roo/skills/engineering/`, `.roo/skills/productivity/`,
27
+ or `.roo/skills/misc/` must have a reference in the top-level
28
+ `README.md`.
29
+
30
+ Each bucket folder has a `README.md` that lists every skill in the
31
+ bucket with a one-line description, with the skill name linked to its
32
+ `SKILL.md`.