@caddis/cli 0.4.34 → 0.4.36

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 (170) hide show
  1. package/bundles/antigravity-plugin/agents/code-reviewer.md +4 -0
  2. package/bundles/antigravity-plugin/plugin.json +1 -1
  3. package/bundles/antigravity-plugin/scripts/caddis_file_lock.py +121 -0
  4. package/bundles/antigravity-plugin/scripts/caddis_frontmatter.py +12 -0
  5. package/bundles/antigravity-plugin/scripts/caddis_gate.py +210 -6
  6. package/bundles/antigravity-plugin/scripts/caddis_inventory.py +9 -9
  7. package/bundles/antigravity-plugin/scripts/caddis_lanes.py +262 -1
  8. package/bundles/antigravity-plugin/scripts/caddis_relay_git.py +159 -0
  9. package/bundles/antigravity-plugin/scripts/caddis_routing.py +103 -0
  10. package/bundles/antigravity-plugin/scripts/caddis_tidy.py +579 -40
  11. package/bundles/antigravity-plugin/scripts/caddis_todo.py +462 -0
  12. package/bundles/antigravity-plugin/scripts/caddis_workstreams.py +631 -0
  13. package/bundles/antigravity-plugin/scripts/check_doc_coverage.py +27 -13
  14. package/bundles/antigravity-plugin/scripts/oss_review.py +30 -3
  15. package/bundles/antigravity-plugin/scripts/setup_project_ai.py +5 -0
  16. package/bundles/antigravity-plugin/scripts/usage_review.py +2 -2
  17. package/bundles/antigravity-plugin/session_end_agy.py +16 -1
  18. package/bundles/antigravity-plugin/skills/_registry.md +35 -32
  19. package/bundles/antigravity-plugin/skills/adopt-app/SKILL.md +1 -1
  20. package/bundles/antigravity-plugin/skills/advisory-hub/SKILL.md +1 -1
  21. package/bundles/antigravity-plugin/skills/api-design/SKILL.md +1 -1
  22. package/bundles/antigravity-plugin/skills/backend-development/SKILL.md +1 -1
  23. package/bundles/antigravity-plugin/skills/catchup/SKILL.md +31 -33
  24. package/bundles/antigravity-plugin/skills/ci-cd-pipeline/SKILL.md +1 -1
  25. package/bundles/antigravity-plugin/skills/cloud-phases/SKILL.md +185 -0
  26. package/bundles/antigravity-plugin/skills/code-documentation/SKILL.md +1 -1
  27. package/bundles/antigravity-plugin/skills/code-review/SKILL.md +1 -1
  28. package/bundles/antigravity-plugin/skills/codebase-audit/SKILL.md +1 -1
  29. package/bundles/antigravity-plugin/skills/confluence-hla/SKILL.md +1 -1
  30. package/bundles/antigravity-plugin/skills/cross-review/SKILL.md +9 -1
  31. package/bundles/antigravity-plugin/skills/css-architecture/SKILL.md +1 -1
  32. package/bundles/antigravity-plugin/skills/dashboard-perf-sweep/SKILL.md +1 -1
  33. package/bundles/antigravity-plugin/skills/database-design/SKILL.md +1 -1
  34. package/bundles/antigravity-plugin/skills/db-diagram/SKILL.md +1 -1
  35. package/bundles/antigravity-plugin/skills/decide/SKILL.md +61 -0
  36. package/bundles/antigravity-plugin/skills/digress/SKILL.md +41 -23
  37. package/bundles/antigravity-plugin/skills/error-handling/SKILL.md +1 -1
  38. package/bundles/antigravity-plugin/skills/explainer-doc/SKILL.md +1 -1
  39. package/bundles/antigravity-plugin/skills/feature-plan/SKILL.md +20 -0
  40. package/bundles/antigravity-plugin/skills/frontend-design/SKILL.md +1 -1
  41. package/bundles/antigravity-plugin/skills/gate-preflight/SKILL.md +12 -0
  42. package/bundles/antigravity-plugin/skills/handoff/SKILL.md +74 -13
  43. package/bundles/antigravity-plugin/skills/implement/SKILL.md +31 -2
  44. package/bundles/antigravity-plugin/skills/mermaid-diagrams/SKILL.md +1 -1
  45. package/bundles/antigravity-plugin/skills/mmr/SKILL.md +8 -0
  46. package/bundles/antigravity-plugin/skills/particle-art/SKILL.md +1 -1
  47. package/bundles/antigravity-plugin/skills/playwright/SKILL.md +1 -1
  48. package/bundles/antigravity-plugin/skills/port-to-github/SKILL.md +1 -1
  49. package/bundles/antigravity-plugin/skills/pr-merge/SKILL.md +33 -2
  50. package/bundles/antigravity-plugin/skills/python/SKILL.md +1 -1
  51. package/bundles/antigravity-plugin/skills/rca/SKILL.md +97 -0
  52. package/bundles/antigravity-plugin/skills/react-dev/SKILL.md +1 -1
  53. package/bundles/antigravity-plugin/skills/safe-cleanup/SKILL.md +1 -1
  54. package/bundles/antigravity-plugin/skills/ship/SKILL.md +27 -7
  55. package/bundles/antigravity-plugin/skills/ship-merge/SKILL.md +36 -3
  56. package/bundles/antigravity-plugin/skills/ship-pr/SKILL.md +6 -1
  57. package/bundles/antigravity-plugin/skills/skill-creator/SKILL.md +1 -1
  58. package/bundles/antigravity-plugin/skills/sql/SKILL.md +1 -1
  59. package/bundles/antigravity-plugin/skills/tech-explainer/SKILL.md +7 -12
  60. package/bundles/antigravity-plugin/skills/technical-writing/SKILL.md +1 -1
  61. package/bundles/antigravity-plugin/skills/test-strategy/SKILL.md +1 -1
  62. package/bundles/antigravity-plugin/skills/ui-review/SKILL.md +1 -1
  63. package/bundles/antigravity-plugin/skills/using-git-worktrees/SKILL.md +1 -1
  64. package/bundles/antigravity-plugin/skills/warm-editorial-ui/SKILL.md +1 -1
  65. package/bundles/antigravity-plugin/skills/webapp-testing/SKILL.md +1 -1
  66. package/bundles/antigravity-plugin/skills/windows-deployment/SKILL.md +1 -1
  67. package/bundles/antigravity-plugin/warm_start_agy.py +138 -42
  68. package/bundles/antigravity-plugin-extras/plugin.json +1 -1
  69. package/bundles/antigravity-plugin-extras/skills/_registry.md +61 -61
  70. package/bundles/antigravity-plugin-extras/skills/agent-md-refactor/SKILL.md +1 -1
  71. package/bundles/antigravity-plugin-extras/skills/agent-orchestration/SKILL.md +1 -1
  72. package/bundles/antigravity-plugin-extras/skills/algorithmic-art/SKILL.md +1 -1
  73. package/bundles/antigravity-plugin-extras/skills/api-client-patterns/SKILL.md +1 -1
  74. package/bundles/antigravity-plugin-extras/skills/architecture-diagram/SKILL.md +1 -1
  75. package/bundles/antigravity-plugin-extras/skills/architecture-document/SKILL.md +1 -1
  76. package/bundles/antigravity-plugin-extras/skills/artifacts-builder/SKILL.md +1 -1
  77. package/bundles/antigravity-plugin-extras/skills/ascii-art/SKILL.md +1 -1
  78. package/bundles/antigravity-plugin-extras/skills/aws-agentic-ai/SKILL.md +1 -1
  79. package/bundles/antigravity-plugin-extras/skills/aws-cdk-development/SKILL.md +1 -1
  80. package/bundles/antigravity-plugin-extras/skills/aws-cost-operations/SKILL.md +1 -1
  81. package/bundles/antigravity-plugin-extras/skills/aws-serverless-eda/SKILL.md +1 -1
  82. package/bundles/antigravity-plugin-extras/skills/backend-to-frontend-handoff/SKILL.md +1 -1
  83. package/bundles/antigravity-plugin-extras/skills/banner-design/SKILL.md +1 -1
  84. package/bundles/antigravity-plugin-extras/skills/brand-design/SKILL.md +1 -1
  85. package/bundles/antigravity-plugin-extras/skills/brand-guidelines/SKILL.md +1 -1
  86. package/bundles/antigravity-plugin-extras/skills/brand-voice/SKILL.md +1 -1
  87. package/bundles/antigravity-plugin-extras/skills/building-ai-agent-on-cloudflare/SKILL.md +3 -7
  88. package/bundles/antigravity-plugin-extras/skills/building-mcp-server-on-cloudflare/SKILL.md +3 -7
  89. package/bundles/antigravity-plugin-extras/skills/canvas-design/SKILL.md +1 -1
  90. package/bundles/antigravity-plugin-extras/skills/changelog-generator/SKILL.md +1 -1
  91. package/bundles/antigravity-plugin-extras/skills/code-explainer/SKILL.md +1 -1
  92. package/bundles/antigravity-plugin-extras/skills/component-testing/SKILL.md +1 -1
  93. package/bundles/antigravity-plugin-extras/skills/cross-review/SKILL.md +10 -2
  94. package/bundles/antigravity-plugin-extras/skills/data-contract-pipeline/SKILL.md +1 -1
  95. package/bundles/antigravity-plugin-extras/skills/data-loader/SKILL.md +1 -1
  96. package/bundles/antigravity-plugin-extras/skills/data-validation/SKILL.md +1 -1
  97. package/bundles/antigravity-plugin-extras/skills/deploy-local/SKILL.md +1 -1
  98. package/bundles/antigravity-plugin-extras/skills/design-md/SKILL.md +1 -1
  99. package/bundles/antigravity-plugin-extras/skills/design-system-tokens/SKILL.md +1 -1
  100. package/bundles/antigravity-plugin-extras/skills/developer-growth-analysis/SKILL.md +1 -1
  101. package/bundles/antigravity-plugin-extras/skills/doc-coauthoring/SKILL.md +1 -1
  102. package/bundles/antigravity-plugin-extras/skills/documentation-analyzer/SKILL.md +1 -1
  103. package/bundles/antigravity-plugin-extras/skills/enterprise-dashboard-aesthetic-system/SKILL.md +1 -1
  104. package/bundles/antigravity-plugin-extras/skills/file-organizer/SKILL.md +1 -1
  105. package/bundles/antigravity-plugin-extras/skills/game-changing-features/SKILL.md +1 -1
  106. package/bundles/antigravity-plugin-extras/skills/golden-nuggets/SKILL.md +1 -1
  107. package/bundles/antigravity-plugin-extras/skills/golden-plan/SKILL.md +1 -1
  108. package/bundles/antigravity-plugin-extras/skills/hld/SKILL.md +1 -1
  109. package/bundles/antigravity-plugin-extras/skills/internal-comms/SKILL.md +1 -1
  110. package/bundles/antigravity-plugin-extras/skills/jira-issues/SKILL.md +1 -1
  111. package/bundles/antigravity-plugin-extras/skills/lld/SKILL.md +1 -1
  112. package/bundles/antigravity-plugin-extras/skills/llm-application-dev/SKILL.md +1 -1
  113. package/bundles/antigravity-plugin-extras/skills/mcp-builder/SKILL.md +1 -1
  114. package/bundles/antigravity-plugin-extras/skills/monorepo/SKILL.md +1 -1
  115. package/bundles/antigravity-plugin-extras/skills/nextjs-app-router/SKILL.md +1 -1
  116. package/bundles/antigravity-plugin-extras/skills/observability/SKILL.md +1 -1
  117. package/bundles/antigravity-plugin-extras/skills/performance-testing/SKILL.md +1 -1
  118. package/bundles/antigravity-plugin-extras/skills/popular-web-designs/SKILL.md +1 -1
  119. package/bundles/antigravity-plugin-extras/skills/prd-to-code/SKILL.md +1 -1
  120. package/bundles/antigravity-plugin-extras/skills/react-useeffect/SKILL.md +1 -1
  121. package/bundles/antigravity-plugin-extras/skills/receiving-code-review/SKILL.md +1 -1
  122. package/bundles/antigravity-plugin-extras/skills/responsive-mobile-native/SKILL.md +4 -9
  123. package/bundles/antigravity-plugin-extras/skills/safe-cleanup/SKILL.md +1 -1
  124. package/bundles/antigravity-plugin-extras/skills/schema-migration/SKILL.md +1 -1
  125. package/bundles/antigravity-plugin-extras/skills/setup-project-ai/SKILL.md +1 -1
  126. package/bundles/antigravity-plugin-extras/skills/shadcn-radix/SKILL.md +1 -1
  127. package/bundles/antigravity-plugin-extras/skills/sketch/SKILL.md +1 -1
  128. package/bundles/antigravity-plugin-extras/skills/streamlit-dev/SKILL.md +1 -1
  129. package/bundles/antigravity-plugin-extras/skills/theme-factory/SKILL.md +1 -1
  130. package/bundles/antigravity-plugin-extras/skills/ui-styling-patterns/SKILL.md +1 -1
  131. package/bundles/antigravity-plugin-extras/skills/ui-ux-intelligence/SKILL.md +1 -1
  132. package/bundles/antigravity-plugin-extras/skills/understand-anything/SKILL.md +5 -9
  133. package/bundles/antigravity-plugin-extras/skills/update-readme/SKILL.md +1 -1
  134. package/bundles/antigravity-plugin-extras/skills/word-cloud/SKILL.md +1 -1
  135. package/bundles/codex/.codex/skills/coding/api-design/SKILL.md +1 -1
  136. package/bundles/codex/.codex/skills/coding/backend-development/SKILL.md +1 -1
  137. package/bundles/codex/.codex/skills/coding/code-review/SKILL.md +1 -1
  138. package/bundles/codex/.codex/skills/coding/codebase-audit/SKILL.md +1 -1
  139. package/bundles/codex/.codex/skills/coding/dashboard-perf-sweep/SKILL.md +1 -1
  140. package/bundles/codex/.codex/skills/coding/error-handling/SKILL.md +1 -1
  141. package/bundles/codex/.codex/skills/coding/python/SKILL.md +1 -1
  142. package/bundles/codex/.codex/skills/coding/sql/SKILL.md +1 -1
  143. package/bundles/codex/.codex/skills/data/database-design/SKILL.md +1 -1
  144. package/bundles/codex/.codex/skills/data/db-diagram/SKILL.md +1 -1
  145. package/bundles/codex/.codex/skills/devops/adopt-app/SKILL.md +1 -1
  146. package/bundles/codex/.codex/skills/devops/ci-cd-pipeline/SKILL.md +1 -1
  147. package/bundles/codex/.codex/skills/devops/port-to-github/SKILL.md +1 -1
  148. package/bundles/codex/.codex/skills/devops/safe-cleanup/SKILL.md +1 -1
  149. package/bundles/codex/.codex/skills/devops/using-git-worktrees/SKILL.md +1 -1
  150. package/bundles/codex/.codex/skills/devops/windows-deployment/SKILL.md +1 -1
  151. package/bundles/codex/.codex/skills/docs/code-documentation/SKILL.md +1 -1
  152. package/bundles/codex/.codex/skills/docs/confluence-hla/SKILL.md +1 -1
  153. package/bundles/codex/.codex/skills/docs/explainer-doc/SKILL.md +1 -1
  154. package/bundles/codex/.codex/skills/docs/tech-explainer/SKILL.md +7 -12
  155. package/bundles/codex/.codex/skills/docs/technical-writing/SKILL.md +1 -1
  156. package/bundles/codex/.codex/skills/frontend/css-architecture/SKILL.md +1 -1
  157. package/bundles/codex/.codex/skills/frontend/frontend-design/SKILL.md +1 -1
  158. package/bundles/codex/.codex/skills/frontend/react-dev/SKILL.md +1 -1
  159. package/bundles/codex/.codex/skills/frontend/ui-review/SKILL.md +1 -1
  160. package/bundles/codex/.codex/skills/frontend/warm-editorial-ui/SKILL.md +1 -1
  161. package/bundles/codex/.codex/skills/media/mermaid-diagrams/SKILL.md +1 -1
  162. package/bundles/codex/.codex/skills/media/particle-art/SKILL.md +1 -1
  163. package/bundles/codex/.codex/skills/testing/playwright/SKILL.md +1 -1
  164. package/bundles/codex/.codex/skills/testing/test-strategy/SKILL.md +1 -1
  165. package/bundles/codex/.codex/skills/testing/webapp-testing/SKILL.md +1 -1
  166. package/bundles/codex/.codex/skills/workflow/advisory-hub/SKILL.md +1 -1
  167. package/bundles/codex/.codex/skills/workflow/skill-creator/SKILL.md +1 -1
  168. package/bundles/codex/AGENTS.md +5 -1
  169. package/bundles/manifest.json +3 -3
  170. package/package.json +1 -1
@@ -0,0 +1,185 @@
1
+ ---
2
+ name: cloud-phases
3
+ description: Run plan phases in Claude Code cloud sessions — write one prompt per phase, push, hand out paste lines, then take the PRs back
4
+ ---
5
+
6
+ # /caddis:cloud-phases — run plan phases in the cloud, then take them back
7
+
8
+ Use this when a plan has phases that can run in parallel and you want them to run in Claude Code
9
+ cloud sessions (claude.ai/code) instead of on this machine. This session stays the orchestrator:
10
+ it writes the work orders, and it reviews and merges the results. The cloud sessions only implement.
11
+
12
+ **How the code moves.** Nothing syncs between the cloud and this disk. GitHub is the only meeting
13
+ point. This session pushes the feature branch and the prompts. Each cloud session clones from
14
+ GitHub, works on its own branch, and opens a pull request (PR) into the feature branch. This session
15
+ merges each PR on GitHub, then pulls. So a cloud session sees only what is committed and pushed.
16
+
17
+ Arguments: `$ARGUMENTS`
18
+
19
+ Two modes:
20
+ - `/caddis:cloud-phases [plan] [phases]` — **dispatch**: Steps 1–6.
21
+ - `/caddis:cloud-phases intake` — **intake**: Step 7, after the owner has run the sessions.
22
+
23
+ With no plan argument, use the active plan (`python "${CLAUDE_PLUGIN_ROOT}/scripts/caddis_todo.py" active-plan`,
24
+ or the one `status: current` plan in `.caddis/plans/`). If there is none, or more than one, ask.
25
+
26
+ ## Step 1 — check the preconditions (stop on any failure)
27
+
28
+ ```
29
+ git remote get-url origin
30
+ git branch --show-current
31
+ git status --short
32
+ gh auth status
33
+ ```
34
+
35
+ - `origin` must be a GitHub repository. Cloud sessions clone from GitHub; a repo with no GitHub
36
+ remote cannot use this command. Say so and stop.
37
+ - The current branch must be the plan's feature branch, never the default branch. The cloud PRs
38
+ target this branch, and it goes to `main` later through the normal `/caddis:ship-pr`.
39
+ - Tracked changes must be committed. A cloud session cannot see uncommitted work.
40
+ - `gh` must be signed in as an account that can push to the repository and open PRs.
41
+
42
+ ## Step 2 — pick the phases for the cloud
43
+
44
+ Take the plan's not-done Tracker rows (or the phase numbers given). Keep a phase **local** when
45
+ any of these is true, and say why:
46
+ - It needs a tool the cloud does not have: Codex, agy, GLM, DeepSeek, a local database, a VPN
47
+ host, or real data.
48
+ - It needs a gitignored file (for example `.caddis/relay/`, `.env`, keys). The cloud clone does
49
+ not have them.
50
+ - It needs the owner's go-ahead when it runs (model evals, production), or it is orchestrator
51
+ work (verification, measurement, release judgement).
52
+ - It depends on a phase that has not merged yet.
53
+
54
+ Then check the **Touches** lists. Two cloud phases may run at the same time only if they share no
55
+ file. When two phases touch the same file — a shared registry or manifest is the usual case — run
56
+ them one after the other, or keep that shared edit local and make it yourself after both merge.
57
+
58
+ ## Step 3 — check the facts each phase depends on (rule: think before you send)
59
+
60
+ For each cloud phase, at the feature branch's current head:
61
+ - Confirm every path, function and line number the phase names. Record what you found, with
62
+ line numbers and the short SHA.
63
+ - Write the edge cases the implementer must handle.
64
+ - Find the exact CI commands for the files it touches (read `.github/workflows/`).
65
+
66
+ A cloud session cannot ask you anything mid-run. Anything you do not write down, it will guess.
67
+
68
+ ## Step 4 — write one prompt per phase
69
+
70
+ Write `.caddis/prompts/<release-or-feature>-cloud-phase-<NN>.md`. Every prompt is self-contained,
71
+ with these sections in this order:
72
+
73
+ ```markdown
74
+ ---
75
+ type: prompt
76
+ title: <feature> Phase <N> (cloud) — <phase goal in a few words>
77
+ created: <YYYY-MM-DD>
78
+ ---
79
+
80
+ # <feature> Phase <N> — <phase title>
81
+
82
+ Suggested model: <Opus | Sonnet> (`/model <alias>`). <one line on why>
83
+
84
+ ## Where you are
85
+ - Repository `<owner>/<repo>`. Start from branch `<feature branch>` at its current head.
86
+ Create branch `<prefix>/phase-<NN>` from it. Work only on that branch.
87
+ - You run in a Claude cloud session. You have no Codex, agy, GLM or DeepSeek, and you cannot see
88
+ gitignored files. This file and the tracked repo hold everything you need.
89
+ - Read `AGENTS.md` at the repo root first. For background only, read the "Constraints" section of
90
+ `<plan path>`. Where it differs, this file wins.
91
+
92
+ ## The phase (copied from the plan)
93
+ <Goal, Touches, Design, TDD, Exit gate, Commit message — copied, not summarised>
94
+
95
+ ## Facts already checked (<date>, at <short SHA>)
96
+ - <path:line — what is there>
97
+
98
+ ## Edge cases to handle
99
+ - <edge case>
100
+
101
+ ## Checks to run before you open the PR (the same as CI)
102
+ - `<exact command>`
103
+ Report the literal result of each.
104
+
105
+ ## Finish
106
+ 1. Commit on `<prefix>/phase-<NN>` with the commit message above. Stage named files only.
107
+ 2. Push the branch: `git push -u origin <prefix>/phase-<NN>`.
108
+ 3. Open a PR into `<feature branch>` (never into the default branch). Put the check results in
109
+ the PR description.
110
+ 4. Do not merge. Do not touch other branches. Stop and report the PR link.
111
+ ```
112
+
113
+ The repository may be public. A prompt is committed and pushed, so it must hold no secrets, no
114
+ internal host names, no machine paths and no credentials.
115
+
116
+ ## Step 5 — commit and push, then prove GitHub has it
117
+
118
+ ```
119
+ git add <each prompt file by name>
120
+ git commit -m "docs(prompts): cloud prompts for <feature> phases <N, M>"
121
+ git push -u origin <feature branch>
122
+ git rev-parse HEAD
123
+ git ls-remote origin refs/heads/<feature branch>
124
+ ```
125
+
126
+ The two SHAs must match. If they do not, the cloud sessions will start from old code — stop and fix
127
+ the push first.
128
+
129
+ ## Step 6 — hand the owner the paste table, then stop
130
+
131
+ Print one row per cloud phase:
132
+
133
+ | Phase | Model | Branch to pick | Paste this |
134
+ |---|---|---|---|
135
+ | <N> | <Sonnet> | `<feature branch>` | `Read .caddis/prompts/<file> and follow it exactly.` |
136
+
137
+ Tell the owner, in these words: open https://claude.ai/code, choose repository `<owner>/<repo>`,
138
+ choose branch `<feature branch>`, paste the line, and start. Phases in the table share no file, so
139
+ they can run at the same time. Then **stop**. Record "dispatched to cloud, PR pending" in each
140
+ phase's Tracker row. When the PRs exist, the owner runs `/caddis:cloud-phases intake`.
141
+
142
+ Do not use the Agent tool with `isolation: "remote"` for this. It has run locally instead of in the
143
+ cloud, which uses no cloud credit and leaves a worktree behind.
144
+
145
+ ## Step 7 — intake: review and merge each PR, then pull
146
+
147
+ ```
148
+ gh pr list --base <feature branch> --state open --json number,title,headRefName,headRefOid
149
+ ```
150
+
151
+ For each PR from a `<prefix>/phase-<NN>` branch, one at a time:
152
+ 1. Read the whole diff (`gh pr diff <N>`). Check it against the phase's Design and Touches. A file
153
+ outside Touches is a finding.
154
+ 2. Wait for CI: `gh pr checks <N> --watch` (or the ci-watch lane, if this caddis has it).
155
+ 3. Review under the three rules: one review, stop at the first CLEAN; after two blocking reviews,
156
+ ask the owner. A fix goes back to the same cloud session or is made locally on the PR branch.
157
+ 4. Just before merging, re-read `gh pr view <N> --json headRefOid,mergeStateStatus`. Merge only if
158
+ the head SHA is the one you reviewed and CI passed on it:
159
+ `gh pr merge <N> --squash --delete-branch`.
160
+ 5. Pull: `git pull --ff-only origin <feature branch>`.
161
+ 6. Run the phase's exit gate locally, and after the last PR, the full test suite.
162
+ 7. Update the phase's Tracker row: status, PR number, merge commit, review result. Set the prompt's
163
+ frontmatter `status: done` so `/caddis:handoff` tidies it.
164
+
165
+ Merge in dependency order. If a later PR conflicts after an earlier merge, ask its session to
166
+ rebase on the feature branch, or resolve it locally on that PR branch — never on the feature branch
167
+ directly.
168
+
169
+ ## Running the orchestrator in the cloud too
170
+ The orchestrator can itself be a cloud session. Nothing above needs this machine, because every
171
+ step goes through GitHub. What changes:
172
+ - The owner still opens each worker session by hand at claude.ai/code. An orchestrator cannot
173
+ start cloud sessions itself.
174
+ - The cloud orchestrator has no Codex, agy, GLM or DeepSeek. Phases on those lanes, and
175
+ second-vendor reviews, stay for a local session.
176
+ - It cannot see gitignored files, so there is no relay: `/caddis:handoff` state does not carry to
177
+ the next session. Put the resume state in the plan's Tracker and push it.
178
+ - Its container ends with the session. Push before you stop, every time.
179
+
180
+ ## Rules
181
+ - This command never merges into the default branch. The feature branch goes there later through
182
+ `/caddis:ship-pr`, and the production boundary check still applies there.
183
+ - One phase, one prompt, one branch, one PR.
184
+ - The orchestrator reads every diff. A green CI run proves only that the tests pass, not that the
185
+ phase did what its Design says.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: code-documentation
3
- description: Writing effective code documentation - API docs, README files, inline comments, and technical guides. Use for documenting codebases, APIs, or writing developer guides.
3
+ description: "Write code documentation: API docs, README files, inline comments and developer guides."
4
4
  source: wshobson/agents
5
5
  license: MIT
6
6
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: code-review
3
3
  context: fork
4
- description: Automated code review for pull requests using specialized review patterns. Analyzes code for quality, security, performance, and best practices. Use when reviewing code changes, PRs, or doing code audits.
4
+ description: Automated code review for quality, security, performance and best practices. Use when reviewing code changes, PRs, or doing code audits.
5
5
  source: anthropics/claude-code
6
6
  license: Apache-2.0
7
7
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: codebase-audit
3
3
  context: fork
4
- description: Systematic codebase audit methodology for unfamiliar codebases before architecture or implementation work. Use for new codebase, unfamiliar codebase, pre-implementation audit, codebase review, technical due diligence, or onboarding to an existing project. Produces AUDIT-FINDINGS.md and QUESTIONS.md. Routes to Architect, Planner, or Code Reviewer agents.
4
+ description: Audit an unfamiliar codebase before architecture or implementation work. Use for a new codebase, pre-implementation audit, codebase review, technical due diligence or onboarding. Produces AUDIT-FINDINGS.md and QUESTIONS.md.
5
5
  ---
6
6
 
7
7
  # Codebase Audit Skill
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: confluence-hla
3
- description: Author enterprise High-Level Architecture (HLA) documents in Simplified Technical English and generate Confluence Storage Format XHTML with self-contained PlantUML diagrams, wrapped tables, and zero AI fingerprints. Use when creating high-level architecture designs, architecture documentation for Confluence, or converting markdown architecture to Confluence storage format.
3
+ description: High-Level Architecture (HLA) documents in Simplified Technical English as Confluence Storage Format XHTML with PlantUML. Use for Confluence architecture docs or converting markdown architecture.
4
4
  ---
5
5
 
6
6
  # Confluence High-Level Architecture (HLA) Authoring Skill
@@ -96,10 +96,18 @@ as a diff that silently is not read. Name a provider explicitly only when you ha
96
96
  ## Interpret the exit code
97
97
  - **0 — REVIEW: CLEAN** → no blocking issues. Proceed.
98
98
  - **1 — REVIEW: BLOCKING** → read the printed findings, then **FIX each blocking item** (or explicitly
99
- justify why one is a false positive). Re-run until CLEAN.
99
+ justify why one is a false positive). Re-run once. A second BLOCKING goes to the owner (rule 3).
100
100
  - **4 — error** → no verdict parsed, or a git/endpoint failure. Read stderr; do NOT treat as clean.
101
101
  - **3 — misconfigured** → `REVIEW_API_KEY` is unset. Set it (see Prerequisite) and re-run.
102
102
 
103
+ ## Three rules: one attempt, one review
104
+ 1. **Think before you send.** Before a task goes to any coder, write its edge cases and check the facts it depends on (one query or one file read).
105
+ 2. **Run it before review.** The coder runs the same checks as CI (name the exact commands in the task). Then run the change once on real data.
106
+ 3. **Review once.** Use whatever reviewer is available. Stop at the first CLEAN. After two blocking reviews, ask the owner.
107
+
108
+ A diff over the batch ceiling is split into batches. Each batch prompt lists every file in the
109
+ change, so a batch does not report the others as missing.
110
+
103
111
  ## Rules
104
112
  - Read-only second opinion — the tool never edits, commits, or pushes. YOU apply fixes in the main thread.
105
113
  - Treat exit **3 or 4** as blocking-unknown, never as approval (the tool is fail-closed by
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: css-architecture
3
- description: CSS architecture, design token strategy, Tailwind conventions, CSS Modules, container queries, dark mode, responsive patterns, and animation architecture. Use for design token naming, CSS custom properties, Tailwind config, container queries, dark mode implementation, fluid typography, or CSS animation decisions. Complements frontend-design (what to achieve) with how to implement it.
3
+ description: "CSS architecture: design tokens, custom properties, Tailwind config, CSS Modules, container queries, dark mode, fluid typography, animation. Covers how to implement styling; frontend-design covers what to achieve."
4
4
  ---
5
5
 
6
6
  # CSS Architecture Skill
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: dashboard-perf-sweep
3
3
  context: fork
4
- description: Re-measure an app's dashboard/API endpoints for load-time regressions and decide, with a documented checklist (not a black-box verdict), whether a slow one is a candidate for the rs-kit summary-table refresher pattern — or needs an index, keyset paging, gzip, or nothing at all. Use when the user says "sweep dashboard performance", "check if this app needs rs-kit", "re-measure the perf tracker", "is this endpoint a refresher candidate", or when a dashboard-performance-tracker.md is stale and needs re-validating. Read-only by default (dev servers only; prod requires an explicit opt-in and human confirmation) and human-invoked, never scheduled -- it surfaces candidates, it does not enroll them.
4
+ description: Re-measure dashboard/API endpoints for load-time regressions and decide by checklist if a slow one needs the rs-kit refresher, an index, keyset paging, gzip, or nothing. Use when the user says "sweep dashboard performance", "check if this app needs rs-kit", "re-measure the perf tracker", "is this endpoint a refresher candidate", or dashboard-performance-tracker.md is stale. Read-only.
5
5
  ---
6
6
 
7
7
  # dashboard-perf-sweep — re-measure, then judge the shape, not just the time
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: database-design
3
- description: Database schema design, optimization, and migration patterns for PostgreSQL, MySQL, and NoSQL databases. Use for designing schemas, writing migrations, or optimizing queries.
3
+ description: Database schema design, migrations and query optimization for PostgreSQL, MySQL and NoSQL.
4
4
  source: wshobson/agents
5
5
  license: MIT
6
6
  ---
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: db-diagram
3
3
  context: fork
4
- description: Turn a SQL artifact — a stored procedure, view, query, .sql file, or table name — into a diagram that explains it to a human. Use when the user says "diagram this query/proc/view/schema", "explain this SQL visually", "draw the ER diagram", "show me the data flow of this stored proc", "/mermaid-db", or "/excalidraw-db". Produces Mermaid (default, git-diffable) or Excalidraw (for design reviews). Read-only — never touches the database.
4
+ description: Diagram a SQL artifact (stored proc, view, query, .sql file, table) as Mermaid or Excalidraw. Use when the user says "diagram this query/proc/view/schema", "explain this SQL visually", "draw the ER diagram", "show me the data flow of this stored proc", "/mermaid-db", or "/excalidraw-db". Read-only.
5
5
  ---
6
6
 
7
7
  # db-diagram — explain SQL as a diagram
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: decide
3
+ description: Record a decision in one step — .caddis/decisions/<date>-<slug>.md
4
+ ---
5
+
6
+ # /caddis:decide — record a decision, once, before it gets re-litigated
7
+
8
+ A decision made mid-task and never written down gets re-argued the next time someone hits the same
9
+ fork. This command writes it as a single-step decision record.
10
+
11
+ The request is **$ARGUMENTS** — the decision, in a few words.
12
+
13
+ ## Step 1 — build the slug
14
+ Lower-case the decision text, replace each run of characters outside `a-z0-9` with one `-`, trim
15
+ `-` from both ends, cap at 60 characters (`Use SQLite, not Postgres` → `use-sqlite-not-postgres`). If nothing is left after cleaning, **stop and ask the user for a shorter title** — the
16
+ one question this command may ask.
17
+
18
+ ## Step 2 — pick the path
19
+ `.caddis/decisions/<YYYY-MM-DD>-<slug>.md`, using today's date (UTC). Create
20
+ `.caddis/decisions/` first if it does not exist.
21
+
22
+ **If that exact path already exists, refuse — never overwrite it.** Print the existing path and
23
+ stop; the user can open it directly, or pick different (more specific) decision text so the slug
24
+ comes out differently.
25
+
26
+ ## Step 3 — write the file
27
+
28
+ ```markdown
29
+ ---
30
+ type: adr
31
+ status: accepted
32
+ found: <YYYY-MM-DD>
33
+ ---
34
+
35
+ # <decision, verbatim>
36
+
37
+ ## Context
38
+ <what forced the decision — the constraint, the conflicting options>
39
+
40
+ ## Decision
41
+ <what was decided, as one plain sentence>
42
+
43
+ ## Consequences
44
+ <what this makes easier, what it makes harder, what it rules out>
45
+ ```
46
+
47
+ ## Step 4 — verify
48
+
49
+ ```bash
50
+ python "${CLAUDE_PLUGIN_ROOT}/scripts/caddis_gate.py" docs-check --root .
51
+ ```
52
+
53
+ Exit 0 means the header is valid. Do not report the item as filed until this passes.
54
+
55
+ ## Step 5 — report
56
+ One line: the path. Nothing else.
57
+
58
+ ## Rules
59
+ - **Never** overwrite an existing decision file. There is no ID allocator and no revision counter —
60
+ a changed decision is new decision text, which naturally gives it a new slug and a new file.
61
+ - This command records a decision already made; it does not itself weigh the options.
@@ -6,9 +6,9 @@ description: Park the current workstream on the stack and switch to a new task
6
6
  # /caddis:digress — park the current task, switch, never lose the thread
7
7
 
8
8
  You are about to leave the current task for a related-but-different one (a design decision, a sub-feature,
9
- or a blocker that must be fixed first). This command **records the original task on a workstream stack** so
10
- neither you nor the user has to remember and re-state it later — `/catchup [name]` pops it back with its exact
11
- resume point, and every SessionStart surfaces it (`⛏ Parked workstream: …`).
9
+ or a blocker that must be fixed first). This command **saves the original task as a workstream relay** (`.caddis/relay/<name>.md`) so
10
+ neither you nor the user has to remember and re-state it later — `/catchup <name>` loads it back with its exact
11
+ resume point, and every SessionStart lists it in the workstream index. Loading never removes it.
12
12
 
13
13
  The reason for the detour is **$ARGUMENTS** (if empty, derive a one-line reason yourself from what the
14
14
  user just asked for).
@@ -27,30 +27,48 @@ next-not-started one).
27
27
  The single next concrete action for the parked task — copy it from the plan's Tracker or from relay.md's
28
28
  `## Next step`. Example: `next: wire the parser to the staging table (see plan Tracker row 2)`.
29
29
 
30
- ## Step 3 — push the frame onto `.caddis/workstreams.json`
31
- The state file is a JSON object `{"version": 1, "stack": [ … ]}`; `stack` is LIFO (last element = most
32
- recently parked). Each frame has exactly these fields:
33
-
34
- ```json
35
- {
36
- "plan": ".caddis/plans/<slug>.md",
37
- "phase": "<current phase>",
38
- "resumePointer": "<the one-line next action from Step 2>",
39
- "reason": "<$ARGUMENTS or your derived one-liner>",
40
- "repo": null,
41
- "pushedAt": "<now, ISO-8601 UTC>"
42
- }
30
+ ## Step 3 — write the workstream relay to `.caddis/relay/<name>.md`
31
+ Write it through the locked script, never with a plain file edit (that would skip the conflict
32
+ check another session relies on). Scripts are in `${CLAUDE_PLUGIN_ROOT}/scripts/` (source
33
+ checkout: `scripts/`).
34
+
35
+ Your session id is printed at session start as `[caddis] this session's id: <id>`; use it for
36
+ `session_id` and `--session-id`, never a guess.
37
+
38
+ 1. `caddis_workstreams.py hash <name>` — note the printed hash (`none` for a new workstream).
39
+ 2. Put the relay below in a temp file, then
40
+ `caddis_workstreams.py write <name> <temp-file> --expected-hash <hash>`. Exit 1 prints the diff
41
+ against what another session saved and writes nothing: show it, merge, retry with the new hash.
42
+ 3. `caddis_workstreams.py render-index --session-id <id> --branch <branch>` refreshes `.caddis/relay.md`.
43
+ If it refuses a legacy `.caddis/relay.md`, or an old `.caddis/workstreams.json` stack exists, run
44
+ `caddis_workstreams.py migrate-legacy` once (it backs up both), then retry.
45
+
46
+ Relay content, with the standard frontmatter:
47
+
48
+ ```markdown
49
+ ---
50
+ type: relay
51
+ workstream: <name>
52
+ branch: <branch>
53
+ session_id: <session_id>
54
+ plan: <plan>
55
+ generated:
56
+ at: <now, ISO-8601 UTC>
57
+ ---
58
+
59
+ # Relay — <name>
60
+
61
+ ## Current workstream
62
+ <Active plan path + phase>
63
+
64
+ ## Next step (exact)
65
+ <the one-line next action from Step 2>
43
66
  ```
44
67
 
45
- - `repo`: `null` means "the plan lives in THIS repo". If the parked plan lives in a **different** repo, set
46
- `repo` to that repo's absolute path (the digression spanned repos).
47
- - Read the file (create `{"version": 1, "stack": []}` if absent). **Idempotency guard:** if the
48
- top-of-stack frame's `plan` already equals the plan you are parking, UPDATE that frame in place (refresh
49
- `phase`, `resumePointer`, `reason`, `pushedAt`) instead of pushing a duplicate. Otherwise APPEND the new
50
- frame. Preserve any unknown fields already present. Write the whole file back (pretty-printed is fine).
68
+ - **Idempotency:** parking the same workstream again replaces its relay through the same hash-checked write; it never duplicates it.
51
69
 
52
70
  ## Step 4 — confirm, then continue
53
- Tell the user: `Parked: <plan> @ <phase>. Now switching to: <the new task>.` Then proceed with whatever the
71
+ Tell the user: `Parked workstream: <name>. Saved to .caddis/relay/<name>.md. Now switching to: <the new task>.` Then proceed with whatever the
54
72
  user asked — the digression IS the new work.
55
73
 
56
74
  ## Rules
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: error-handling
3
- description: Error handling patterns for Python and TypeScript applications. Use when designing error hierarchies, implementing retry logic, building error boundaries, or establishing logging strategies. Covers custom exceptions, result types, circuit breakers, and user-facing error messages.
3
+ description: "Error handling for Python and TypeScript: error hierarchies, custom exceptions, result types, retries, circuit breakers, error boundaries, logging, user-facing messages."
4
4
  ---
5
5
 
6
6
  # Error Handling Skill
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: explainer-doc
3
3
  context: fork
4
- description: Write a document that hands off work to a team who did NOT do the investigation — an external vendor, another team, a contractor — and who must be able to act on it alone. Use when the user says "write a spec for the X team", "document this for someone outside the team", "explainer doc", "implementation spec for a vendor", "hand this off to Y", or is about to write a design doc whose primary reader did not live through the debugging/design process. NOT for internal specs where the reader already has full context (use technical-writing or writing-plans instead) — this is specifically for the "stranger must follow it alone" case.
4
+ description: Hand-off doc for a team that did NOT do the investigation (vendor, contractor, another team) — the "stranger must follow it alone" case. Use when the user says "write a spec for the X team", "document this for someone outside the team", "explainer doc", "implementation spec for a vendor", or "hand this off to Y". Not for readers with full context.
5
5
  ---
6
6
 
7
7
  # explainer-doc — write for the reader who has no other context
@@ -154,6 +154,21 @@ session that is handed a phase belonging to another lane spawns that lane rather
154
154
  work; a headless one records the deviation in the Tracker. Write the launch command out in full, per
155
155
  phase — it is executed verbatim.
156
156
 
157
+ **Choose each phase's Lane from the routing table.** Run
158
+ `python "${CLAUDE_PLUGIN_ROOT}/scripts/caddis_routing.py" show --json`. A phase the orchestrator
159
+ does itself (verification, measurement, release judgement) uses the `critical` role. A phase whose
160
+ Implementer line says "light" uses `light`. Every other phase uses `coding`. Take the first model
161
+ of that role and write its Lane line as follows:
162
+
163
+ - `opus`: `claude — /model opus`
164
+ - `sonnet`: `claude — /model sonnet`
165
+ - `claude`: `claude — this session`
166
+ - `codex`: codex — `codex exec --ephemeral --sandbox workspace-write "HEADLESS RUN RULES. Read <plan path> and its Constraints. Implement Phase N only in the current checkout. Do not switch or create branches, commit, push, or edit files outside this phase. Run its exit gate and report the literal result."`
167
+ - `agy`: agy — `agy --mode accept-edits --dangerously-skip-permissions --add-dir . --print-timeout 20m --output-format text -p "HEADLESS RUN RULES. Read <plan path> and its Constraints. Implement Phase N only in the current checkout. Do not switch or create branches, commit, push, or edit files outside this phase. Run its exit gate and report the literal result."`
168
+
169
+ Replace `<plan path>` and `N` with this plan's path and phase number. If the routing command fails
170
+ or exits 3, use `claude — this session` and state the reason in that phase.
171
+
157
172
  #### A phase may take a no-escalation lane only if its exit gate would fail on a spec error
158
173
  `glm-headless` cannot escalate: it does what the phase says. So completeness is only half the test —
159
174
  the other half is whether being **wrong** would be caught. Ask literally: *"if the instruction I just
@@ -257,6 +272,11 @@ yourself (relay + Tracker) before stopping — do not hand back "run `/caddis:ha
257
272
  <same structure>
258
273
 
259
274
  ## Execution protocol (standing rules — this plan is the memory, not anyone's head)
275
+ Three rules: one attempt, one review.
276
+ 1. **Think before you send.** Before a task goes to any coder, write its edge cases and check the facts it depends on (one query or one file read).
277
+ 2. **Run it before review.** The coder runs the same checks as CI (name the exact commands in the task). Then run the change once on real data.
278
+ 3. **Review once.** Use whatever reviewer is available. Stop at the first CLEAN. After two blocking reviews, ask the owner.
279
+
260
280
  - One phase at a time: read this plan → run the phase on its **Lane** → RED→GREEN→VERIFY→CROSS-REVIEW→
261
281
  COMMIT → update the **Tracker** row. The Tracker is the resume signal for every future session.
262
282
  - **Session boundaries:** the executor WRITES the handoff (durable `relay.md` + Tracker) after any
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: frontend-design
3
- description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications. Generates creative, polished code that avoids generic AI aesthetics while strictly adhering to the user's technical standards.
3
+ description: Create distinctive, production-grade frontend interfaces that avoid generic AI aesthetics. Use when the user asks to build web components, pages, artifacts, posters or applications.
4
4
  ---
5
5
 
6
6
  # Frontend Design Skill
@@ -8,6 +8,18 @@ description: Deterministic headless preflight — validates a plan against the a
8
8
  Validate the implementation plan at **$ARGUMENTS** against the ACTUAL codebase before any code is
9
9
  written.
10
10
 
11
+ **Which plan.** An explicit plan argument always wins. Only when `$ARGUMENTS` is empty, find the
12
+ active plan:
13
+
14
+ ```bash
15
+ python "${CLAUDE_PLUGIN_ROOT}/scripts/caddis_todo.py" active-plan
16
+ ```
17
+
18
+ - **Exit 0** → stdout is the plan path. Say which plan you picked ("No plan given; using
19
+ `<path>`.") and validate it.
20
+ - **Exit 3** → no single active plan. Do not ask: name the candidates it printed on stderr (or
21
+ "none") and end with `PREFLIGHT: FAIL`.
22
+
11
23
  This command exists because `/caddis:preflight` is a model-invoked `context: fork` **SKILL**, and
12
24
  skills do not reliably activate under headless `claude -p` — proven live (2026-07-08): a run saw
13
25
  the raw `/caddis:code-review <sha-range>` text, didn't recognise it, and replied "I don't see a