tech-lead-stack 1.0.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.
- package/.agents/hr-workflows/hr-ad-distributor.md +18 -0
- package/.agents/hr-workflows/hr-candidate-sourcer.md +18 -0
- package/.agents/hr-workflows/hr-endorsement-synthesizer.md +18 -0
- package/.agents/hr-workflows/hr-intake-specifier.md +18 -0
- package/.agents/hr-workflows/hr-interview-auditor.md +18 -0
- package/.agents/hr-workflows/hr-jd-drafter.md +18 -0
- package/.agents/hr-workflows/hr-pipeline-translator.md +18 -0
- package/.agents/pm-workflows/pm-action-item-mapper.md +18 -0
- package/.agents/pm-workflows/pm-backlog-auditor.md +18 -0
- package/.agents/pm-workflows/pm-context-summarizer.md +18 -0
- package/.agents/pm-workflows/pm-design-system-auditor.md +18 -0
- package/.agents/pm-workflows/pm-effort-estimator.md +18 -0
- package/.agents/pm-workflows/pm-newsletter-generator.md +18 -0
- package/.agents/pm-workflows/pm-progress-translator.md +18 -0
- package/.agents/pm-workflows/pm-release-note-drafter.md +18 -0
- package/.agents/pm-workflows/pm-risk-detector.md +18 -0
- package/.agents/pm-workflows/pm-story-augmenter.md +18 -0
- package/.agents/pm-workflows/pm-task-specifier.md +18 -0
- package/.agents/workflows/accessibility-audit.md +30 -0
- package/.agents/workflows/ask.md +44 -0
- package/.agents/workflows/audit-tech-debt.md +31 -0
- package/.agents/workflows/changelog.md +31 -0
- package/.agents/workflows/clean-code-audit.md +31 -0
- package/.agents/workflows/code-review.md +38 -0
- package/.agents/workflows/competitive-analysis.md +46 -0
- package/.agents/workflows/design-requirements-to-architecture.md +31 -0
- package/.agents/workflows/design-system-review.md +113 -0
- package/.agents/workflows/dev-team-sub-max.md +57 -0
- package/.agents/workflows/dev-team-sub-pro.md +57 -0
- package/.agents/workflows/dev-team.md +52 -0
- package/.agents/workflows/feature-orchestrator.md +43 -0
- package/.agents/workflows/init.md +31 -0
- package/.agents/workflows/mission-architect.md +31 -0
- package/.agents/workflows/onboard-dev.md +31 -0
- package/.agents/workflows/plan-quick.md +33 -0
- package/.agents/workflows/plan.md +31 -0
- package/.agents/workflows/pr-automator.md +44 -0
- package/.agents/workflows/pr-design-review-init.md +57 -0
- package/.agents/workflows/qa-handover.md +40 -0
- package/.agents/workflows/reflexion-loop-sub-max.md +46 -0
- package/.agents/workflows/reflexion-loop-sub-pro.md +45 -0
- package/.agents/workflows/reflexion-loop.md +66 -0
- package/.agents/workflows/regression-bug-fix.md +31 -0
- package/.agents/workflows/security-audit.md +31 -0
- package/.agents/workflows/standup-daily-summary.md +31 -0
- package/.agents/workflows/strategy-target-evaluation.md +31 -0
- package/.agents/workflows/style-logic-exporter.md +84 -0
- package/.agents/workflows/ui-spec-generator.md +156 -0
- package/.agents/workflows/verify-changes.md +31 -0
- package/.agents/workflows/vertical-slice.md +52 -0
- package/.agents/workflows/weekly-leadership-report.md +39 -0
- package/.ai/agent-surfaces.json +1235 -0
- package/.ai/hooks/README.md +32 -0
- package/.ai/hooks/build-requires-approved-spec.json +10 -0
- package/.ai/hooks/deploy-requires-review.json +11 -0
- package/.ai/hooks/no-ai-approve-deploy.json +10 -0
- package/.ai/hooks/protected-paths.json +10 -0
- package/.ai/hr-skills/hr-ad-distributor.md +61 -0
- package/.ai/hr-skills/hr-candidate-sourcer.md +69 -0
- package/.ai/hr-skills/hr-endorsement-synthesizer.md +82 -0
- package/.ai/hr-skills/hr-intake-specifier.md +71 -0
- package/.ai/hr-skills/hr-interview-auditor.md +60 -0
- package/.ai/hr-skills/hr-jd-drafter.md +61 -0
- package/.ai/hr-skills/hr-pipeline-translator.md +58 -0
- package/.ai/pm-skills/pm-action-item-mapper.md +61 -0
- package/.ai/pm-skills/pm-backlog-auditor.md +57 -0
- package/.ai/pm-skills/pm-context-summarizer.md +61 -0
- package/.ai/pm-skills/pm-effort-estimator.md +79 -0
- package/.ai/pm-skills/pm-newsletter-generator.md +60 -0
- package/.ai/pm-skills/pm-progress-translator.md +59 -0
- package/.ai/pm-skills/pm-release-note-drafter.md +58 -0
- package/.ai/pm-skills/pm-risk-detector.md +58 -0
- package/.ai/pm-skills/pm-story-augmenter.md +70 -0
- package/.ai/pm-skills/pm-task-specifier.md +70 -0
- package/.ai/policies/diagnosis-first.md +26 -0
- package/.ai/policies/four-pillars.md +72 -0
- package/.ai/policies/user-sovereignty.md +25 -0
- package/.ai/skills/accessibility-auditor.md +105 -0
- package/.ai/skills/agent-optimizer.md +99 -0
- package/.ai/skills/ask.md +200 -0
- package/.ai/skills/capacity-planner.md +60 -0
- package/.ai/skills/changelog-generator.md +131 -0
- package/.ai/skills/clean-code.md +136 -0
- package/.ai/skills/code-review-checklist.md +103 -0
- package/.ai/skills/codebase-onboarding-intelligence.md +130 -0
- package/.ai/skills/competitive-analysis.md +114 -0
- package/.ai/skills/daily-standup.md +106 -0
- package/.ai/skills/design-system-review.md +308 -0
- package/.ai/skills/dev-team-local.md +52 -0
- package/.ai/skills/dev-team-orchestrator.md +289 -0
- package/.ai/skills/dev-team-sub-max.md +369 -0
- package/.ai/skills/dev-team-sub-pro.md +288 -0
- package/.ai/skills/dummy-skill.md +28 -0
- package/.ai/skills/feature-design-assistant.md +134 -0
- package/.ai/skills/feature-orchestrator.md +163 -0
- package/.ai/skills/knowledge-manager.md +103 -0
- package/.ai/skills/mission-architect.md +86 -0
- package/.ai/skills/mission-control.md +102 -0
- package/.ai/skills/operational-boundaries.md +94 -0
- package/.ai/skills/planning-expert-quick.md +164 -0
- package/.ai/skills/planning-expert.md +390 -0
- package/.ai/skills/pr-automator.md +431 -0
- package/.ai/skills/product-strategist.md +123 -0
- package/.ai/skills/qa-handover-generator.md +182 -0
- package/.ai/skills/reflexion-loop-local.md +39 -0
- package/.ai/skills/reflexion-loop-sub-max.md +214 -0
- package/.ai/skills/reflexion-loop-sub-pro.md +164 -0
- package/.ai/skills/reflexion-loop.md +119 -0
- package/.ai/skills/regression-bug-fix.md +95 -0
- package/.ai/skills/security-audit.md +97 -0
- package/.ai/skills/solutioning-facilitator.md +338 -0
- package/.ai/skills/style-logic-exporter.md +115 -0
- package/.ai/skills/technical-debt-auditor.md +119 -0
- package/.ai/skills/ui-spec-generator.md +78 -0
- package/.ai/skills/verification-auditor.md +101 -0
- package/.ai/skills/vertical-slice-decomposer.md +335 -0
- package/.ai/skills/visual-verifier.md +134 -0
- package/.ai/skills/weekly-leadership-report.md +224 -0
- package/.ai/skills.graph.json +1550 -0
- package/LICENSE +21 -0
- package/README.md +58 -0
- package/dist/mcp-server.mjs +5203 -0
- package/package.json +48 -0
|
@@ -0,0 +1,369 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dev-team-sub-max
|
|
3
|
+
description: >
|
|
4
|
+
[DEV-TEAM · SUB-MAX · NO API KEYS · CROSS-MODEL VERIFY] Subscription-tier
|
|
5
|
+
($100/mo) dev team orchestrator. Runs up to 2 parallel lanes with git
|
|
6
|
+
worktrees, enforces turn budgets and quota ledger checkpoints, hardens plans
|
|
7
|
+
via reflexion-loop-sub-max, manages multi-vendor model isolation (L0-L3) and
|
|
8
|
+
exhaustion limits without losing work, and keeps the full visual fidelity gate
|
|
9
|
+
intact without requiring API keys.
|
|
10
|
+
cost: ~4300 tokens
|
|
11
|
+
modes: [read-only, write, mcp]
|
|
12
|
+
surface: public
|
|
13
|
+
category: Orchestrators
|
|
14
|
+
how:
|
|
15
|
+
'Multi-vendor model contract, Quota Ledger with active model tracking,
|
|
16
|
+
Findings Ledger, and context-firewalled reviewer isolation'
|
|
17
|
+
useCase:
|
|
18
|
+
'Multi-lane parallel feature orchestration on a high-tier ($100/mo)
|
|
19
|
+
subscription without API keys'
|
|
20
|
+
kind: orchestrator
|
|
21
|
+
domain: eng
|
|
22
|
+
spans: [intent, specify, plan, build, maintain, review, deploy]
|
|
23
|
+
ownership:
|
|
24
|
+
drive: human-ai
|
|
25
|
+
approve: human
|
|
26
|
+
targets: [api, subscription]
|
|
27
|
+
minModelClass: large
|
|
28
|
+
suggests:
|
|
29
|
+
[
|
|
30
|
+
dev-team-orchestrator,
|
|
31
|
+
dev-team-sub-pro,
|
|
32
|
+
mission-architect,
|
|
33
|
+
reflexion-loop-sub-max,
|
|
34
|
+
reflexion-loop,
|
|
35
|
+
visual-verifier,
|
|
36
|
+
]
|
|
37
|
+
policies:
|
|
38
|
+
- user-sovereignty
|
|
39
|
+
- diagnosis-first
|
|
40
|
+
- four-pillars
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
# Dev Team Orchestrator — Sub-Max Tier ($100/mo)
|
|
44
|
+
|
|
45
|
+
> Tier siblings: dev-team-orchestrator (API keys, dual-model) · dev-team-sub-max
|
|
46
|
+
> ($100 tier) · dev-team-sub-pro ($20 tier). See the tier table in the README.
|
|
47
|
+
>
|
|
48
|
+
> [!NOTE] **Tier profile ($100/mo subscription):** Designed for high-tier
|
|
49
|
+
> subscription agents (e.g. Pro/Max or Team plans). Runs up to **2 parallel
|
|
50
|
+
> lanes** with git worktree isolation, enforces turn budgets, uses
|
|
51
|
+
> `reflexion-loop-sub-max` for plan hardening, handles model exhaustion limits
|
|
52
|
+
> seamlessly without losing work, and requires **no external API keys**.
|
|
53
|
+
|
|
54
|
+
## Runtime modes
|
|
55
|
+
|
|
56
|
+
Produces a blueprint and hand-off in read-only chat; executes in an IDE/MCP
|
|
57
|
+
agent.
|
|
58
|
+
|
|
59
|
+
> [!IMPORTANT] **Anti-Micromanagement Litmus** Personas receive goals + gates,
|
|
60
|
+
> never line-by-line instructions. The human appears only at gates. We advise;
|
|
61
|
+
> the User Tech-Lead decides.
|
|
62
|
+
|
|
63
|
+
<!-- -->
|
|
64
|
+
|
|
65
|
+
> [!CAUTION] **RUNTIME MODE (DETERMINE FIRST — NON-NEGOTIABLE)**
|
|
66
|
+
>
|
|
67
|
+
> - **Read-only chat (`/chat`):** write/exec tools are forbidden; only
|
|
68
|
+
> `get_skill`, `list_skills`, `read_file` exist. Deliver a **verifiable
|
|
69
|
+
> blueprint + handoff**.
|
|
70
|
+
> - **IDE / MCP-enabled Agent:** you have full write access and must execute and
|
|
71
|
+
> verify changes.
|
|
72
|
+
|
|
73
|
+
<!-- -->
|
|
74
|
+
|
|
75
|
+
> [!IMPORTANT] **EXECUTION DISCIPLINE (IDE/MCP MODE)**
|
|
76
|
+
>
|
|
77
|
+
> - **Produce, don't deliberate:** never call a sequential-thinking/planning
|
|
78
|
+
> tool more than twice consecutively without emitting a concrete output. If
|
|
79
|
+
> unsure, emit the current phase's artifact.
|
|
80
|
+
> - **No stall commands:** run no further search/terminal command between
|
|
81
|
+
> finishing a phase's inputs and emitting its artifact.
|
|
82
|
+
> - **DIRECT EDITS ONLY:** native file edit tools only (no regex/patch.js
|
|
83
|
+
> scripts).
|
|
84
|
+
|
|
85
|
+
## Pre-Flight Model Contract (MANDATORY BEFORE PHASE 0)
|
|
86
|
+
|
|
87
|
+
The orchestrator MUST read active models from the agent harness at runtime.
|
|
88
|
+
Formulate and print the Pre-Flight Model Contract before Phase 0:
|
|
89
|
+
|
|
90
|
+
| Role | Model class assigned | Isolation vs writer | Continuity Fallback |
|
|
91
|
+
| ---------------- | ----------------------------- | ------------------- | -------------------------- |
|
|
92
|
+
| planner | frontier | N/A (writer) | Rung 1 -> Rung 2 |
|
|
93
|
+
| reviewer / qa | a different vendor's frontier | L0 (cross-vendor) | Rung 1 -> Rung 2 -> Park |
|
|
94
|
+
| developer | mid-tier | N/A (implementer) | Rung 1 -> Rung 2 -> Rung 3 |
|
|
95
|
+
| discovery / grep | small/fast | N/A (read-only) | Rung 3 |
|
|
96
|
+
|
|
97
|
+
### Environment Check (`CLAUDE_CODE_SUBAGENT_MODEL`)
|
|
98
|
+
|
|
99
|
+
Before claiming an isolation level, check the `CLAUDE_CODE_SUBAGENT_MODEL`
|
|
100
|
+
environment variable.
|
|
101
|
+
|
|
102
|
+
- If `CLAUDE_CODE_SUBAGENT_MODEL` is set to anything other than `inherit`, all
|
|
103
|
+
sub-agents collapse onto a single model.
|
|
104
|
+
- **Action:** Issue a warning plainly in chat and cap the claimed isolation
|
|
105
|
+
level at **L2**. Never claim L0 or L1 when environment variables override
|
|
106
|
+
sub-agent model selection.
|
|
107
|
+
|
|
108
|
+
### Four-Level Isolation Ladder
|
|
109
|
+
|
|
110
|
+
Claim the level ACHIEVED based on runtime model selection:
|
|
111
|
+
|
|
112
|
+
- **L0 (Cross-Vendor)**: Writer and reviewer run on models from different
|
|
113
|
+
vendors. Default target for reviewer.
|
|
114
|
+
- **L1 (Cross-Family, Same Vendor)**: Writer and reviewer run on different model
|
|
115
|
+
families from the same vendor (shared training lineage limitation apply).
|
|
116
|
+
- **L2 (Fresh Sub-Agent)**: Same model, fresh sub-agent context receiving only
|
|
117
|
+
diff + criteria + commands.
|
|
118
|
+
- **L3 (Fresh Session)**: Same model, work pasted into a new session cold.
|
|
119
|
+
|
|
120
|
+
### Reviewer / QA Resolution Ladder
|
|
121
|
+
|
|
122
|
+
Resolve reviewer and QA models with the Critic Resolution Ladder defined in
|
|
123
|
+
`reflexion-loop-sub-max`
|
|
124
|
+
(`./.ai/rtk-run run resolve-critic --writer <vendor> --writer-model <planner-model>`):
|
|
125
|
+
Gemini (`gemini-cli`, then `agy`) -> `codex` -> Claude (`claude-subagent` inside
|
|
126
|
+
Claude Code, else `claude-cli`) -> another harness model -> same model. Each
|
|
127
|
+
rung works on a subscription or an API key. Never guess a CLI: the standalone
|
|
128
|
+
`gemini` CLI no longer serves personal Google logins (since 18 June 2026), and
|
|
129
|
+
its `GOOGLE_CLOUD_PROJECT` error means unsupported account type. On the
|
|
130
|
+
same-model rung the slice is `PROVISIONAL` and the lane state file MUST carry
|
|
131
|
+
the STRONG `Critic Advisory` line.
|
|
132
|
+
|
|
133
|
+
## Phase 0A — Cold Resume Protocol (MANDATORY FIRST STEP)
|
|
134
|
+
|
|
135
|
+
On invocation, before performing any codebase search or stack discovery:
|
|
136
|
+
|
|
137
|
+
1. Check for existing lane state files in `.dev-team/lanes/*.md`.
|
|
138
|
+
2. If any lane file exists and status is NOT `Complete`:
|
|
139
|
+
- Read `.dev-team/quota.md` and print
|
|
140
|
+
`[turns: used/budget | model: <active-model>]`.
|
|
141
|
+
- Read Findings Ledger `.dev-team/analysis/<lane-id>.md` and incomplete lane
|
|
142
|
+
state file(s).
|
|
143
|
+
- **DO NOT re-run Phase 0 stack discovery** for a lane that already recorded
|
|
144
|
+
its stack — that wastes turn budget in a fresh window.
|
|
145
|
+
- Immediately resume execution from recorded `Phase` following
|
|
146
|
+
`Resume Instruction`.
|
|
147
|
+
3. If no incomplete lane files exist, proceed to Phase 0B.
|
|
148
|
+
|
|
149
|
+
## Phase 0B — Stack Discovery & Mission Frame
|
|
150
|
+
|
|
151
|
+
- **Skill acquisition (NON-NEGOTIABLE):** IDE/MCP agent MUST call `get_skills`
|
|
152
|
+
tool; Chat UI MUST call `get_skill`. Never raw-read `.ai/skills/`.
|
|
153
|
+
- **Discovery Budget:** Scoped searches only (exclude `node_modules`, `.next`,
|
|
154
|
+
`.nx`, `dist`, `build`). Print Phase 1 sizing scores immediately after
|
|
155
|
+
discovery.
|
|
156
|
+
- **Stack ID & Mission Frame:** Formulate stack summary, one-sentence mission,
|
|
157
|
+
and success metric.
|
|
158
|
+
- **Findings Ledger Creation:** Immediately write stack facts, file paths, and
|
|
159
|
+
domain boundaries to `.dev-team/analysis/<lane-id>.md`.
|
|
160
|
+
|
|
161
|
+
## Phase 1 — Crew Sizing Gate
|
|
162
|
+
|
|
163
|
+
Evaluate task based on five-signal 0–2 rubric (Surface area, Novelty, Risk,
|
|
164
|
+
Ambiguity, Parallelism). **Scores MUST be printed first before any work
|
|
165
|
+
begins.**
|
|
166
|
+
|
|
167
|
+
_(Note: The ceiling limits below are generated/derived — see
|
|
168
|
+
`TIER_POLICY['sub-max']` in `src/lib/ai/tier-policy.ts` for the authoritative
|
|
169
|
+
code policy.)_
|
|
170
|
+
|
|
171
|
+
| Size | Score | Crew | Max Parallel Lanes | Loop Hardening |
|
|
172
|
+
| ---- | ----- | --------------------------------------------- | ------------------ | ---------------------------------------------------------------- |
|
|
173
|
+
| XS | 0–1 | Developer only | 1 | self-check + autoeval |
|
|
174
|
+
| S | 2–3 | Developer + Reviewer | 1 | reviewer gate |
|
|
175
|
+
| M | 4–5 | Planner + Developer + Reviewer | 1–2 | plan gate + review gate |
|
|
176
|
+
| L | 6–8 | PM-analyst + Planner + Dev ×N + Reviewer + QA | 2 | `reflexion-loop-sub-max` recommended |
|
|
177
|
+
| XL | 9–10 | mission-architect strategy + L crew | 2 | `reflexion-loop-sub-max` mandatory + Tech-Lead confirmation gate |
|
|
178
|
+
|
|
179
|
+
> [!CAUTION] **Sub-Max Sizing Constraints:** Max 2 parallel lanes (enforced by
|
|
180
|
+
> `tier-policy.ts`). XL requires a Tech-Lead confirmation gate in
|
|
181
|
+
> `.dev-team/inbox.md` stating expected turn cost (~60 turns across lanes)
|
|
182
|
+
> before worktree creation.
|
|
183
|
+
|
|
184
|
+
## Phase 2 — Lane & Quota Ledgers
|
|
185
|
+
|
|
186
|
+
### Quota Ledger (`.dev-team/quota.md`)
|
|
187
|
+
|
|
188
|
+
- Mission turn budget: **60 turns** | Per-lane turn budget: **25 turns**
|
|
189
|
+
- Print `[turns: used/budget | model: <active-model>]` at every gate boundary.
|
|
190
|
+
|
|
191
|
+
| Lane ID | Active Model | Turns Used | Turn Budget | Headroom Last Poll | Swap Count | Last Checkpoint | Status |
|
|
192
|
+
| ------- | ------------ | ---------- | ----------- | ------------------ | ---------- | --------------- | ------ |
|
|
193
|
+
| ... | ... | ... | 25 | ... | 0 | ... | ... |
|
|
194
|
+
|
|
195
|
+
### Lane Ledger & CHECKPOINT-BEFORE-GATE
|
|
196
|
+
|
|
197
|
+
| lane-id | task | size | crew | branch+worktree | state-file | status | next-gate |
|
|
198
|
+
| ------- | ---- | ---- | ---- | --------------- | ---------- | ------ | --------- |
|
|
199
|
+
| ... | ... | ... | ... | ... | ... | ... | ... |
|
|
200
|
+
|
|
201
|
+
- **Isolation:** One git worktree per lane (`rtk git worktree add ...`), single
|
|
202
|
+
writer per lane. Mandatory worktree bootstrap (deps, `.env`, clients, builds)
|
|
203
|
+
before testing.
|
|
204
|
+
- **CHECKPOINT-BEFORE-GATE (MANDATORY):** Write `.dev-team/lanes/<lane-id>.md`
|
|
205
|
+
BEFORE entering any gate.
|
|
206
|
+
|
|
207
|
+
**State File Template (`.dev-team/lanes/<lane-id>.md`):**
|
|
208
|
+
|
|
209
|
+
```md
|
|
210
|
+
# Lane: <lane-id>
|
|
211
|
+
|
|
212
|
+
- Task: <description>
|
|
213
|
+
- Status: <status> (Active | Complete | PROVISIONAL | UNREVIEWED)
|
|
214
|
+
- Next Gate: <gate>
|
|
215
|
+
- Phase: <current-phase-number>
|
|
216
|
+
- Active Model: <model-name>
|
|
217
|
+
- Isolation Level: <L0-L3>
|
|
218
|
+
- Critic Rung: <gemini-cli | agy | codex | claude-subagent | claude-cli |
|
|
219
|
+
harness-model | same-model> (<skipped rungs: reasons>)
|
|
220
|
+
- Critic Advisory: <none | STRONG — SAME_MODEL_CRITIC: review ran on the
|
|
221
|
+
writer's model and is NOT independent; deep-review before merge, then set up
|
|
222
|
+
gemini/agy, codex or claude and re-review>
|
|
223
|
+
- Turns Used: <turns-count> / 25
|
|
224
|
+
- Last Checkpoint: <timestamp>
|
|
225
|
+
- Resume Instruction:
|
|
226
|
+
<one imperative sentence telling a fresh-context agent exactly what to do next>
|
|
227
|
+
- Current Artifacts: <links/paths>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
## Phase 3 — Persona Execution, Model Continuity, UNREVIEWED vs PROVISIONAL Slices
|
|
231
|
+
|
|
232
|
+
### Model Exhaustion Classification
|
|
233
|
+
|
|
234
|
+
- **Mode A (MODEL-SCOPED):** Quota spent on one model. Run fallback ladder and
|
|
235
|
+
continue.
|
|
236
|
+
- **Mode B (ACCOUNT-WIDE):** Limit reached across models. Consolidate into
|
|
237
|
+
Findings Ledger, PARK, report reset window. State 3 disclosure applies.
|
|
238
|
+
- **Mode C (SILENT DOWNGRADE):** Harness swapped models mid-session without
|
|
239
|
+
error. Poll active model at every phase boundary. Any change is recorded as a
|
|
240
|
+
swap event.
|
|
241
|
+
|
|
242
|
+
### Sideways-Before-Downward Fallback Ladder
|
|
243
|
+
|
|
244
|
+
Reason about VENDOR and CLASS separately:
|
|
245
|
+
|
|
246
|
+
1. **Rung 1 (Same Class, Different Vendor):** Move to an equivalent frontier
|
|
247
|
+
class model on another vendor. Isolation level preserved (L0).
|
|
248
|
+
2. **Rung 2 (Same Vendor, Lower Class):** Move to lower model class on same
|
|
249
|
+
vendor. Recompute isolation level (if lands on writer's model, claim drops to
|
|
250
|
+
L2).
|
|
251
|
+
3. **Rung 3 (Small/Fast Class):** THROUGHPUT ROLES ONLY (developer, discovery,
|
|
252
|
+
QA capture). Assurance roles NEVER fall to Rung 3; PARK instead.
|
|
253
|
+
4. **Rung 4 (No Capacity Anywhere):** Consolidate into Findings Ledger, PARK,
|
|
254
|
+
report reset window in State 3.
|
|
255
|
+
|
|
256
|
+
### Slice Status Definitions: UNREVIEWED vs PROVISIONAL
|
|
257
|
+
|
|
258
|
+
- **PROVISIONAL Slices:** A slice whose review was completed under a degraded
|
|
259
|
+
assurance role (same model or L2/L3 isolation). Marked `PROVISIONAL` in Lane
|
|
260
|
+
Ledger and state file. PROVISIONAL slices are re-reviewed when capacity
|
|
261
|
+
returns, or require explicit Tech-Lead waiver.
|
|
262
|
+
- **UNREVIEWED Slices:** A slice where the run stopped before the audit ran or
|
|
263
|
+
completed (Mode B park). UNREVIEWED work has received NO verification pass.
|
|
264
|
+
- **Risk-2 Work Rule:** Auth, payments, customer data, and infrastructure
|
|
265
|
+
changes MAY NOT close on a PROVISIONAL or UNREVIEWED approval — PARK instead.
|
|
266
|
+
|
|
267
|
+
### Findings Ledger Protocol (`.dev-team/analysis/<lane-id>.md`)
|
|
268
|
+
|
|
269
|
+
Write stack facts, file paths, domain boundaries, Figma measurements, and
|
|
270
|
+
**OPTIONS REJECTED WITH REASONS** (mandatory) the moment established.
|
|
271
|
+
Consolidate at 20% headroom / 80% turn budget spent. Schedule swap for NEXT
|
|
272
|
+
phase boundary.
|
|
273
|
+
|
|
274
|
+
### Reviewer Isolation & Visual Gate
|
|
275
|
+
|
|
276
|
+
Reviewer runs in fresh sub-agent (Context Firewall: diff + criteria + commands).
|
|
277
|
+
Must **ACT, not read**. Figma spec in plan required. Gate 4 Layout Deviation
|
|
278
|
+
Report & `visual-verifier` capture required for UI slices.
|
|
279
|
+
|
|
280
|
+
## Phase 4 — Tech-Lead Interview at Gates
|
|
281
|
+
|
|
282
|
+
Batch questions in `.dev-team/inbox.md`. PARK is a hard stop. Inbox is read-only
|
|
283
|
+
after human responds. Never bypass gate failures silently.
|
|
284
|
+
|
|
285
|
+
## Phase 5 — Friction Defect Protocol & Model Swap Triggers
|
|
286
|
+
|
|
287
|
+
**Triggers:**
|
|
288
|
+
|
|
289
|
+
- ≥2 rework loops on one gate.
|
|
290
|
+
- Skill misbehaviour or missing tool/permission.
|
|
291
|
+
- **Model Swap Trigger:** A lane swaps models more than 2 times, or any
|
|
292
|
+
assurance role falls to Rung 3.
|
|
293
|
+
|
|
294
|
+
**Action:** Write `.dev-team/friction/<date>-<slug>.md`. Append draft command to
|
|
295
|
+
inbox. Draft-only unless `DEV_TEAM_AUTOFILE_ISSUES=1`.
|
|
296
|
+
|
|
297
|
+
> [!CAUTION] **ABSOLUTE RULE** `git push`, `git add`, and `merge` remain
|
|
298
|
+
> STRICTLY FORBIDDEN regardless of mode or env var.
|
|
299
|
+
|
|
300
|
+
## Telemetry
|
|
301
|
+
|
|
302
|
+
Pass `{ teamRole: "<ROLE>", loopRunId: "<MISSION_ID>", actorType: "AGENT" }` on
|
|
303
|
+
every skill call.
|
|
304
|
+
|
|
305
|
+
## Three Mandatory End-State Disclosures (VERY FIRST LINE OF FINAL OUTPUT)
|
|
306
|
+
|
|
307
|
+
The FIRST line of final output MUST emit exactly one of these three end states:
|
|
308
|
+
|
|
309
|
+
- **STATE 1 — Separation Held (Auditor finished on a different model):**
|
|
310
|
+
|
|
311
|
+
```text
|
|
312
|
+
Model separation held: written by <model-a>, audited by <model-b>.
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
- **STATE 2 — Separation Lost (Auditor FINISHED, but on the writer's model):**
|
|
316
|
+
|
|
317
|
+
```text
|
|
318
|
+
MODEL SEPARATION LOST: <writer-model> wrote this work and also audited it.
|
|
319
|
+
<exhausted-model> hit its usage limit at <phase/step>, so the audit fell back to the same model that produced the work. This audit was not independent.
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
- **STATE 3 — Audit Incomplete (Run stopped before auditor finished):**
|
|
323
|
+
|
|
324
|
+
```text
|
|
325
|
+
AUDIT NOT COMPLETED: the run stopped at <phase/step> before the audit finished.
|
|
326
|
+
<exhausted-model> hit an account-wide usage limit, so no model was available to continue. The work below is UNREVIEWED, not approved. Quota resets <window>.
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
### Selection Rule
|
|
330
|
+
|
|
331
|
+
State 2 REQUIRES that an audit RAN TO COMPLETION on the writer's model. If the
|
|
332
|
+
audit did not complete, State 3 applies — NEVER State 2. An unfinished audit is
|
|
333
|
+
not a weak audit, it is an absent one.
|
|
334
|
+
|
|
335
|
+
### Full Provenance Table (Emitted Beneath Disclosure Line)
|
|
336
|
+
|
|
337
|
+
| Phase | Role | Model | Isolation | Reason for swap | Effect on the claim |
|
|
338
|
+
| ----- | ---- | ----- | --------- | --------------- | ------------------- |
|
|
339
|
+
| ... | ... | ... | ... | ... | ... |
|
|
340
|
+
|
|
341
|
+
## Four Pillars Compliance & Anti-Rationalization
|
|
342
|
+
|
|
343
|
+
### Anti-Rationalization Protocol
|
|
344
|
+
|
|
345
|
+
| Rationalization | Rebuttal / Required Behavior |
|
|
346
|
+
| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------- |
|
|
347
|
+
| "Tests pass so the slice is done." | Test-pass is not design-pass. Run visual fidelity gate and paste Layout Deviation Report. |
|
|
348
|
+
| "I'll bootstrap the worktree later." | Without bootstrap (deps, `.env`, clients, builds), `check-types` is meaningless. Bootstrap immediately. |
|
|
349
|
+
| "The human is probably fine with this choice." | PARK and write to `.dev-team/inbox.md`. Guessing an answer is a defect. |
|
|
350
|
+
| "The audit passed anyway, so the notice would just worry them." | A pass from the author is not a pass; the notice IS the finding. Emit disclosure line as line 1. |
|
|
351
|
+
| "The model swap was handled automatically, so it's an implementation detail." | Handling it seamlessly is why developer cannot see it, which is exactly why it must be stated. |
|
|
352
|
+
| "It is already recorded in the provenance table below." | A table row is not a disclosure; the first line is. |
|
|
353
|
+
|
|
354
|
+
### Hooks (Ownership Gates)
|
|
355
|
+
|
|
356
|
+
Before advancing to the next phase or gate, you MUST consult `.ai/hooks/`. If a
|
|
357
|
+
guard is triggered and requires human approval (`require-human-approve`), you
|
|
358
|
+
MUST append the question to the human inbox (`.dev-team/inbox.md`) rather than
|
|
359
|
+
proceeding.
|
|
360
|
+
|
|
361
|
+
## Code Modification Convention
|
|
362
|
+
|
|
363
|
+
**REQUIREMENT:** When modifying files, you MUST use the `apply_patch` tool with
|
|
364
|
+
minimal SEARCH/REPLACE blocks instead of rewriting whole files.
|
|
365
|
+
|
|
366
|
+
- Never emit a full-file rewrite.
|
|
367
|
+
- Never restate unchanged code.
|
|
368
|
+
- **Rule:** Include only the lines that change plus minimal surrounding anchor
|
|
369
|
+
context.
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dev-team-sub-pro
|
|
3
|
+
description: >
|
|
4
|
+
[DEV-TEAM · SUB-PRO · NO API KEYS · CROSS-MODEL VERIFY] Subscription-tier
|
|
5
|
+
($20/mo) dev pair orchestrator. Single-lane, branch-based execution without
|
|
6
|
+
worktrees, enforcing turn budgets, builder/checker roles, cross-vendor model
|
|
7
|
+
isolation, Mode B quota handling, and tier-ceiling enforcement without
|
|
8
|
+
requiring API keys.
|
|
9
|
+
cost: ~3500 tokens
|
|
10
|
+
modes: [read-only, write, mcp]
|
|
11
|
+
surface: public
|
|
12
|
+
category: Orchestrators
|
|
13
|
+
how:
|
|
14
|
+
'Single-lane Builder/Checker model contract, compressed Findings Ledger, Mode
|
|
15
|
+
B consolidate-and-park, and mandatory three-state end-state disclosure'
|
|
16
|
+
useCase:
|
|
17
|
+
'Frugal single-lane feature orchestration on a standard ($20/mo) subscription
|
|
18
|
+
without API keys'
|
|
19
|
+
kind: orchestrator
|
|
20
|
+
domain: eng
|
|
21
|
+
spans: [intent, specify, plan, build, maintain, review, deploy]
|
|
22
|
+
ownership:
|
|
23
|
+
drive: human-ai
|
|
24
|
+
approve: human
|
|
25
|
+
targets: [api, subscription]
|
|
26
|
+
minModelClass: large
|
|
27
|
+
suggests:
|
|
28
|
+
[
|
|
29
|
+
dev-team-orchestrator,
|
|
30
|
+
dev-team-sub-max,
|
|
31
|
+
reflexion-loop-sub-pro,
|
|
32
|
+
reflexion-loop,
|
|
33
|
+
vertical-slice-decomposer,
|
|
34
|
+
]
|
|
35
|
+
policies:
|
|
36
|
+
- user-sovereignty
|
|
37
|
+
- diagnosis-first
|
|
38
|
+
- four-pillars
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
# Dev Team Orchestrator — Sub-Pro Tier ($20/mo)
|
|
42
|
+
|
|
43
|
+
> Tier siblings: dev-team-orchestrator (API keys, dual-model) · dev-team-sub-max
|
|
44
|
+
> ($100 tier) · dev-team-sub-pro ($20 tier). See the tier table in the README.
|
|
45
|
+
>
|
|
46
|
+
> [!NOTE] **Tier profile ($20/mo subscription):** Honest promise: **A
|
|
47
|
+
> disciplined pair, not a team.** Designed for standard subscription tiers (e.g.
|
|
48
|
+
> Pro/Plus plans). Operates as a single-lane **Builder + Checker pair** directly
|
|
49
|
+
> on a feature branch (no git worktrees), capped at size M / Risk 1 tasks, with
|
|
50
|
+
> a strict 20-turn slice budget and **no external API keys**.
|
|
51
|
+
|
|
52
|
+
<!-- -->
|
|
53
|
+
|
|
54
|
+
> [!NOTE] **Frugal Compression Notice:** To preserve token frugality on a $20
|
|
55
|
+
> plan, multi-lane rebalancing and rung-probing sequences are **OMITTED**. The
|
|
56
|
+
> L0–L3 ladder, fallback rungs, and Findings Ledger structure are
|
|
57
|
+
> **COMPRESSED**. For detailed protocol mechanics, refer to `dev-team-sub-max`.
|
|
58
|
+
> The Pre-Flight Model Contract, `CLAUDE_CODE_SUBAGENT_MODEL` check, Mode B
|
|
59
|
+
> consolidate-and-park protocol, and Mandatory Three-State Disclosure rules are
|
|
60
|
+
> included **FULL and uncompressed**.
|
|
61
|
+
|
|
62
|
+
## Runtime modes
|
|
63
|
+
|
|
64
|
+
Produces a blueprint in read-only chat; executes in IDE/MCP mode.
|
|
65
|
+
|
|
66
|
+
> [!IMPORTANT] **Anti-Micromanagement Litmus** Personas receive goals + gates,
|
|
67
|
+
> never line-by-line instructions. The human appears only at gates. We advise;
|
|
68
|
+
> the User Tech-Lead decides.
|
|
69
|
+
|
|
70
|
+
<!-- -->
|
|
71
|
+
|
|
72
|
+
> [!CAUTION] **RUNTIME MODE (DETERMINE FIRST — NON-NEGOTIABLE)** Read-only chat
|
|
73
|
+
> (`/chat`): write/exec forbidden; deliver verifiable blueprint + handoff.
|
|
74
|
+
> IDE/MCP mode: full write access via native edits.
|
|
75
|
+
|
|
76
|
+
## Pre-Flight Model Contract (FULL)
|
|
77
|
+
|
|
78
|
+
Read active models from agent harness at runtime. Formulate and print:
|
|
79
|
+
|
|
80
|
+
| Role | Model class assigned | Isolation vs writer | Continuity Fallback |
|
|
81
|
+
| ------------------------- | ----------------------------- | ------------------- | ------------------- |
|
|
82
|
+
| Builder (Plan + Dev) | frontier / mid | N/A (writer) | Consolidate & Park |
|
|
83
|
+
| Checker (Review + Verify) | a different vendor's frontier | L0 (cross-vendor) | L1 -> L2 -> Park |
|
|
84
|
+
|
|
85
|
+
> **Sub-Pro Note:** Sub-pro is **throughput-limited** (quota, single lane, crew
|
|
86
|
+
> ceiling M, tighter turn budget), not model-limited. Cross-vendor L0 isolation
|
|
87
|
+
> is reachable on the entry tier wherever the platform offers one lineup across
|
|
88
|
+
> paid tiers. Model availability is platform-dependent; read the harness's
|
|
89
|
+
> actual model list at runtime instead of assuming a tier ceiling.
|
|
90
|
+
|
|
91
|
+
### Environment Check (`CLAUDE_CODE_SUBAGENT_MODEL` — FULL)
|
|
92
|
+
|
|
93
|
+
If `CLAUDE_CODE_SUBAGENT_MODEL` is set to anything other than `inherit`, warn
|
|
94
|
+
plainly in chat and cap claimed isolation level at **L2** (same-model
|
|
95
|
+
sub-agent). Never claim L0 or L1 when overridden by environment variables.
|
|
96
|
+
|
|
97
|
+
### Isolation Ladder & Fallback Rungs (COMPRESSED)
|
|
98
|
+
|
|
99
|
+
- **L0 (Cross-Vendor)**: Different vendor models. Default target for Checker.
|
|
100
|
+
- **L1 (Cross-Family)**: Same vendor, different model family.
|
|
101
|
+
- **L2 (Fresh Sub-Agent)**: Same model, fresh sub-agent context.
|
|
102
|
+
- **L3 (Fresh Session)**: Same model, cold paste into fresh session.
|
|
103
|
+
- **Fallback Rungs:** Rung 1 (same class, different vendor) -> Rung 2 (same
|
|
104
|
+
vendor lower class, claim drops to L2 if lands on writer) -> Rung 3
|
|
105
|
+
(small/fast, throughput roles only; assurance roles PARK).
|
|
106
|
+
- **Checker Resolution (COMPRESSED — full ladder in `reflexion-loop-sub-max`):**
|
|
107
|
+
run
|
|
108
|
+
`./.ai/rtk-run run resolve-critic --writer <vendor> --writer-model <builder-model>`;
|
|
109
|
+
order is Gemini (`gemini-cli`, then `agy`) -> `codex` -> Claude
|
|
110
|
+
(`claude-subagent` inside Claude Code, else `claude-cli`) -> another harness
|
|
111
|
+
model -> same model, each on a subscription or an API key. The standalone
|
|
112
|
+
`gemini` CLI no longer serves personal Google logins (since 18 June 2026) — a
|
|
113
|
+
`GOOGLE_CLOUD_PROJECT` error means the probe moves on to `agy`. Record
|
|
114
|
+
`Critic Rung:` in `.dev-team/lanes/lane-1.md`; on the same-model rung the
|
|
115
|
+
slice is `PROVISIONAL` and the file MUST carry a STRONG `Critic Advisory:`
|
|
116
|
+
line (SAME_MODEL_CRITIC — review not independent; deep-review before merge,
|
|
117
|
+
and re-review once a Gemini, `codex` or Claude critic works).
|
|
118
|
+
|
|
119
|
+
## Phase 0A — Cold Resume Protocol (MANDATORY FIRST STEP)
|
|
120
|
+
|
|
121
|
+
1. Check for existing state file `.dev-team/lanes/lane-1.md`.
|
|
122
|
+
2. If incomplete: print `[turns: used/20 | model: <active-model>]`, read
|
|
123
|
+
`.dev-team/analysis/lane-1.md` and state file. **DO NOT re-run Phase 0
|
|
124
|
+
discovery**. Resume immediately from recorded `Phase`.
|
|
125
|
+
3. If no incomplete lane file exists, proceed to Phase 0B.
|
|
126
|
+
|
|
127
|
+
## Phase 0B — Stack Discovery & Mission Frame
|
|
128
|
+
|
|
129
|
+
- **Skill acquisition:** Call `get_skills` for `dev-team-sub-pro`. Never
|
|
130
|
+
raw-read `.ai/skills/`.
|
|
131
|
+
- **Discovery Budget:** Scoped searches (exclude build dirs). Print sizing
|
|
132
|
+
scores immediately after discovery.
|
|
133
|
+
- **Findings Ledger:** Write stack facts, file paths, and domain boundaries to
|
|
134
|
+
`.dev-team/analysis/lane-1.md`.
|
|
135
|
+
|
|
136
|
+
## Phase 1 — Crew Sizing & Tier Ceiling Gate
|
|
137
|
+
|
|
138
|
+
Evaluate task using 0–2 rubric (Surface area, Novelty, Risk, Ambiguity,
|
|
139
|
+
Parallelism). **Scores MUST be printed first.**
|
|
140
|
+
|
|
141
|
+
_(Note: The ceiling limits below are generated/derived — see
|
|
142
|
+
`TIER_POLICY['sub-pro']` in `src/lib/ai/tier-policy.ts` for the authoritative
|
|
143
|
+
code policy.)_
|
|
144
|
+
|
|
145
|
+
| Size | Score | Execution Model | Hardening |
|
|
146
|
+
| ------ | ----- | ---------------------------- | --------------------------------------------- |
|
|
147
|
+
| XS | 0–1 | Single Builder/Checker slice | Self-check |
|
|
148
|
+
| S | 2–3 | Builder + Checker | Optional `reflexion-loop-sub-pro` if Risk = 1 |
|
|
149
|
+
| M | 4–5 | Builder + Checker | Optional `reflexion-loop-sub-pro` if Risk = 1 |
|
|
150
|
+
| L / XL | 6–10 | **REFUSED (Exceeds Budget)** | Escalate to `dev-team-sub-max` |
|
|
151
|
+
|
|
152
|
+
> [!CAUTION] **Sub-Pro Tier Refusal Rules:** Score ≥ 6 (L/XL) or Risk signal = 2
|
|
153
|
+
> (auth/payments/data/infra) -> Print scores and REFUSE: _"Exceeds this tier's
|
|
154
|
+
> budget. Decompose with `vertical-slice-decomposer` or escalate to
|
|
155
|
+
> dev-team-sub-max."_ STOP. (Enforced by `tier-policy.ts`)
|
|
156
|
+
|
|
157
|
+
## Phase 2 — Single-Lane & Quota Ledger (COMPRESSED)
|
|
158
|
+
|
|
159
|
+
- Slice turn budget: **20 turns max**. Branch-based (no git worktrees).
|
|
160
|
+
- Quota Ledger (`.dev-team/quota.md`):
|
|
161
|
+
`[turns: used/20 | active_model | headroom | swap_count]`.
|
|
162
|
+
- Lane Ledger: `lane-1` | task | size | Builder+Checker | current branch |
|
|
163
|
+
`.dev-team/lanes/lane-1.md` | Active | gate.
|
|
164
|
+
- **CHECKPOINT-BEFORE-GATE:** Write `.dev-team/lanes/lane-1.md` BEFORE entering
|
|
165
|
+
any gate.
|
|
166
|
+
|
|
167
|
+
## Phase 3 — Two-Hat Execution, Mode B Protocol & Slices (UNREVIEWED vs PROVISIONAL)
|
|
168
|
+
|
|
169
|
+
### Mode B Consolidate-and-Park Protocol (FULL)
|
|
170
|
+
|
|
171
|
+
On a single-lane $20/mo subscription, there is no headroom to spend probing
|
|
172
|
+
fallback rungs.
|
|
173
|
+
|
|
174
|
+
- On encountering Mode B account-wide limit, or reaching 20 turns:
|
|
175
|
+
1. Compact all stack facts, file paths, decisions, and **OPTIONS REJECTED WITH
|
|
176
|
+
REASONS** into `.dev-team/analysis/lane-1.md`.
|
|
177
|
+
2. Write state file `.dev-team/lanes/lane-1.md` with status `UNREVIEWED`.
|
|
178
|
+
3. PARK, report progress, and report reset window in State 3 disclosure.
|
|
179
|
+
|
|
180
|
+
### Slice Status Definitions: UNREVIEWED vs PROVISIONAL (FULL)
|
|
181
|
+
|
|
182
|
+
- **PROVISIONAL Slices:** Reviewed by a degraded Checker (same model or L2/L3
|
|
183
|
+
isolation). Marked `PROVISIONAL` in Lane Ledger and state file. Re-reviewed
|
|
184
|
+
when capacity returns or requires explicit Tech-Lead waiver.
|
|
185
|
+
- **UNREVIEWED Slices:** Work where the run stopped before Checker ran or
|
|
186
|
+
completed (Mode B park). UNREVIEWED work has received NO verification pass.
|
|
187
|
+
- **Mid-Flight Risk-2 Escalation:** Intake screening is imperfect. If work is
|
|
188
|
+
DISCOVERED to touch Risk-2 areas (auth, payments, data, infra) after
|
|
189
|
+
acceptance, the lane PARKS immediately. Record the discovery and evidence in
|
|
190
|
+
the lane state file and inbox, and escalate to a higher tier
|
|
191
|
+
(`dev-team-sub-max` or `dev-team-orchestrator`). Do not close the slice on a
|
|
192
|
+
PROVISIONAL or UNREVIEWED approval, and do not continue assuming the original
|
|
193
|
+
sizing was right. Mid-flight discovery is the expected failure mode this rule
|
|
194
|
+
catches.
|
|
195
|
+
|
|
196
|
+
### Findings Ledger Structure (COMPRESSED)
|
|
197
|
+
|
|
198
|
+
File: `.dev-team/analysis/lane-1.md`. Contains stack facts, file paths, domain
|
|
199
|
+
boundaries, Figma measurements, decisions, and **OPTIONS REJECTED WITH REASONS**
|
|
200
|
+
(mandatory).
|
|
201
|
+
|
|
202
|
+
### Checker Isolation & Visual Gate
|
|
203
|
+
|
|
204
|
+
Checker runs in fresh sub-agent context. Must **ACT, not read**. Figma spec in
|
|
205
|
+
plan STILL required. Visual gate captures 2 viewports (Desktop/Mobile).
|
|
206
|
+
|
|
207
|
+
## Phase 4 & 5 — Gates & Friction Defect Protocol
|
|
208
|
+
|
|
209
|
+
Batch questions in `.dev-team/inbox.md`. PARK is a hard stop. Inbox is read-only
|
|
210
|
+
after human responds.
|
|
211
|
+
|
|
212
|
+
- **Friction Defect Trigger:** Write `.dev-team/friction/<date>-<slug>.md` if
|
|
213
|
+
rework ≥2 on a gate, skill misbehaviour, missing tool, **or if lane swaps
|
|
214
|
+
models >2 times or Checker falls to Rung 3**. Draft-only unless
|
|
215
|
+
`DEV_TEAM_AUTOFILE_ISSUES=1`.
|
|
216
|
+
|
|
217
|
+
> [!CAUTION] **ABSOLUTE RULE** `git push`, `git add`, and `merge` are STRICTLY
|
|
218
|
+
> FORBIDDEN.
|
|
219
|
+
|
|
220
|
+
## Telemetry
|
|
221
|
+
|
|
222
|
+
Pass `{ teamRole: "<ROLE>", loopRunId: "<MISSION_ID>", actorType: "AGENT" }` on
|
|
223
|
+
every skill call.
|
|
224
|
+
|
|
225
|
+
## Three Mandatory End-State Disclosures (FULL — VERY FIRST LINE OF OUTPUT)
|
|
226
|
+
|
|
227
|
+
The FIRST line of final output MUST emit exactly one of these three end states:
|
|
228
|
+
|
|
229
|
+
- **STATE 1 — Separation Held (Auditor finished on a different model):**
|
|
230
|
+
|
|
231
|
+
```text
|
|
232
|
+
Model separation held: written by <model-a>, audited by <model-b>.
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
- **STATE 2 — Separation Lost (Auditor FINISHED, but on the writer's model):**
|
|
236
|
+
|
|
237
|
+
```text
|
|
238
|
+
MODEL SEPARATION LOST: <writer-model> wrote this work and also audited it.
|
|
239
|
+
<exhausted-model> hit its usage limit at <phase/step>, so the audit fell back to the same model that produced the work. This audit was not independent.
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
- **STATE 3 — Audit Incomplete (Run stopped before auditor finished):**
|
|
243
|
+
|
|
244
|
+
```text
|
|
245
|
+
AUDIT NOT COMPLETED: the run stopped at <phase/step> before the audit finished.
|
|
246
|
+
<exhausted-model> hit an account-wide usage limit, so no model was available to continue. The work below is UNREVIEWED, not approved. Quota resets <window>.
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Selection Rule
|
|
250
|
+
|
|
251
|
+
State 2 REQUIRES that an audit RAN TO COMPLETION on the writer's model. If the
|
|
252
|
+
audit did not complete, State 3 applies — NEVER State 2. An unfinished audit is
|
|
253
|
+
not a weak audit, it is an absent one.
|
|
254
|
+
|
|
255
|
+
Emit Provenance Table
|
|
256
|
+
(`| Phase | Role | Model | Isolation | Reason for swap | Effect on the claim |`)
|
|
257
|
+
beneath disclosure line.
|
|
258
|
+
|
|
259
|
+
## Four Pillars & Anti-Rationalization
|
|
260
|
+
|
|
261
|
+
### Anti-Rationalization Protocol
|
|
262
|
+
|
|
263
|
+
| Rationalization | Rebuttal / Required Behavior |
|
|
264
|
+
| ----------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
265
|
+
| "It's an L task, but I can handle it in Sub-Pro." | Score L/XL or Risk 2 MUST be refused immediately. Escalate to Sub-Max or Dev-Team-Orchestrator. |
|
|
266
|
+
| "The sizing said Risk-1, so this is fine." | Sizing scored the brief, not the code; when discovery contradicts the brief, discovery wins — PARK and escalate. |
|
|
267
|
+
| "Since we don't use worktrees, I'll commit directly." | `git add` and `git push` are strictly forbidden. Edits remain uncommitted. |
|
|
268
|
+
| "I'm the Builder so I can self-certify the review." | Checker must run in fresh sub-agent context and paste hard evidence. |
|
|
269
|
+
| "The audit passed anyway, so the notice would just worry them." | A pass from the author is not a pass; the notice IS the finding. Emit disclosure line as line 1. |
|
|
270
|
+
| "The model swap was handled automatically, so it's an implementation detail." | Handling it seamlessly is why developer cannot see it, which is exactly why it must be stated. |
|
|
271
|
+
| "It is already recorded in the provenance table below." | A table row is not a disclosure; the first line is. |
|
|
272
|
+
|
|
273
|
+
### Hooks (Ownership Gates)
|
|
274
|
+
|
|
275
|
+
Before advancing to the next phase or gate, you MUST consult `.ai/hooks/`. If a
|
|
276
|
+
guard is triggered and requires human approval (`require-human-approve`), you
|
|
277
|
+
MUST append the question to the human inbox (`.dev-team/inbox.md`) rather than
|
|
278
|
+
proceeding.
|
|
279
|
+
|
|
280
|
+
## Code Modification Convention
|
|
281
|
+
|
|
282
|
+
**REQUIREMENT:** When modifying files, you MUST use the `apply_patch` tool with
|
|
283
|
+
minimal SEARCH/REPLACE blocks instead of rewriting whole files.
|
|
284
|
+
|
|
285
|
+
- Never emit a full-file rewrite.
|
|
286
|
+
- Never restate unchanged code.
|
|
287
|
+
- **Rule:** Include only the lines that change plus minimal surrounding anchor
|
|
288
|
+
context.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Dummy Skill
|
|
3
|
+
description: A dummy skill for testing purposes.
|
|
4
|
+
phase: build
|
|
5
|
+
cost: ~200 tokens
|
|
6
|
+
modes: [read-only, mcp]
|
|
7
|
+
surface: internal
|
|
8
|
+
kind: skill
|
|
9
|
+
domain: shared
|
|
10
|
+
ownership:
|
|
11
|
+
drive: human-ai
|
|
12
|
+
approve: human
|
|
13
|
+
targets: [local, api, subscription]
|
|
14
|
+
minModelClass: small
|
|
15
|
+
policies:
|
|
16
|
+
- user-sovereignty
|
|
17
|
+
- diagnosis-first
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Dummy Skill
|
|
21
|
+
|
|
22
|
+
You MUST keep this line verbatim.
|
|
23
|
+
|
|
24
|
+
This text is extra fluff that should be distilled away by the SLM to make the
|
|
25
|
+
output shorter. We add a lot of extra words here to ensure that the compression
|
|
26
|
+
algorithm has something to remove. The quick brown fox jumps over the lazy dog.
|
|
27
|
+
The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the
|
|
28
|
+
lazy dog. The quick brown fox jumps over the lazy dog.
|