diff --git a/cursor-team-kit/skills/fix-ci/SKILL.md b/cursor-team-kit/skills/fix-ci/SKILL.md index 60adbdde5..000af926c 100644 --- a/cursor-team-kit/skills/fix-ci/SKILL.md +++ b/cursor-team-kit/skills/fix-ci/SKILL.md @@ -1,6 +1,6 @@ --- name: fix-ci -description: Find failing PR checks, inspect logs or external check links, and apply focused fixes +description: Find failing pull request checks, inspect logs or external check links, and apply focused fixes. Use when an open pull request on the current branch has a red host or continuous integration check, including during feature work, or when the user asks to get a pull request green. --- # Fix CI diff --git a/pstack/skills/arena/SKILL.md b/pstack/skills/arena/SKILL.md index b198b9e42..6478fa3f1 100644 --- a/pstack/skills/arena/SKILL.md +++ b/pstack/skills/arena/SKILL.md @@ -25,11 +25,11 @@ If a candidate produces no output, proceed with N-1 and note the dropout. ## Phase C: Cross-judge -After all Phase B candidates complete, choose one model from the `arena cross-judge pool` line in `~/.cursor/rules/pstack-models.mdc`. If the rule or that line is missing, choose from `claude-opus-5-5-xhigh` and `grok-4.7-xhigh-fast`. Prefer a different model family from the parent's. Spawn one readonly judge subagent on that model. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with your reading in Phase D. Don't spawn it while candidates are still writing. +After all Phase B candidates complete, choose one model from the `arena cross-judge pool` line in `~/.cursor/rules/pstack-models.mdc`. If the rule or that line is missing, choose from `claude-opus-5-5-xhigh` and `grok-4.7-xhigh-fast`. Prefer a different model family from the parent's. Spawn one readonly judge subagent on that model. It sees the rubric and the candidates by path label, scores each criterion, and recommends a base with rationale. It runs in parallel with your reading in Phase D. Don't spawn it while candidates are still writing. Disqualify a candidate whose load-bearing claim fails a check against the repo, such as a manual excerpt, an existing render, or a prior image. ## Phase D: Pick a base -Read every candidate end to end before picking. Score each against the rubric criterion by criterion, not on holistic feel, and compare with the cross-judge. Agreement on the base confirms the pick. Disagreement means one of you is biased or the rubric was ambiguous. Read both rationales before deciding. +Read every candidate end to end before picking. Score each against the rubric criterion by criterion, not on holistic feel, and compare with the cross-judge. The judge's total is not sufficient when a load-bearing claim fails that repo check. Agreement on the base confirms the pick. Disagreement means one of you is biased or the rubric was ambiguous. Read both rationales before deciding. Pick the base a future maintainer can extend most easily without breaking invariants. When two feel tied, prefer the cleaner boundary or smaller API, per the Laziness Protocol. @@ -45,4 +45,4 @@ Verify the synthesized artifact like any other output, per the **prove-it-works* ## Outputs -One synthesized artifact, with a short synthesis note alongside naming the base and why, the cross-judge's verdict, each graft with its source candidate, what was rejected and why, any convergence or dropouts, and the verification result. +One synthesized artifact, with a short synthesis note alongside naming the base and why, the cross-judge's verdict, each graft with its source candidate, what was rejected and why, any convergence or dropouts, and the verification result. Keep that note in the session store or a repo note. A copy that exists only under `/tmp` is not the record. diff --git a/pstack/skills/how/SKILL.md b/pstack/skills/how/SKILL.md index 67edc340d..681526f97 100644 --- a/pstack/skills/how/SKILL.md +++ b/pstack/skills/how/SKILL.md @@ -21,7 +21,7 @@ When in doubt, take the simple path. ## 2. Explore (complex only) -Decompose the question into 2 to 4 angles, each a distinct slice of the subsystem. Spawn all explorers in a single message, each with `references/explorer-prompt.md` and its angle filled in. +Decompose the question into 2 to 4 angles, each a distinct slice of the subsystem. Spawn all explorers in a single message, each with `references/explorer-prompt.md` and its angle filled in. When the docs and a host probe can disagree on an interrupt or a device flag, measure on the host before the explainer locks that line. ## 3. Synthesize (complex only) diff --git a/pstack/skills/poteto-mode/playbooks/feature.md b/pstack/skills/poteto-mode/playbooks/feature.md index eb1040cb2..a784d91c3 100644 --- a/pstack/skills/poteto-mode/playbooks/feature.md +++ b/pstack/skills/poteto-mode/playbooks/feature.md @@ -5,15 +5,17 @@ 1. `how` over the affected subsystem. 2. `architect` for parallel design exploration. 3. Write the throughput checkpoint as four todo items. A dimension that genuinely does not apply (single file, no fan-out) keeps its item with `n/a: ` rather than being dropped: - - **Blocking first steps.** Gates run before fan-out. + - **Blocking first steps.** Gates run before fan-out. A red host or pull request check on the branch is one of those gates. Reproduce it and fix it before how or architect. - **Independent workstreams.** Disjoint files, services, or layers parallelize. Shared writes serialize. - **Shared mutable state.** Default to splitting the target (the **separate-before-serializing-shared-state** principle skill). Serialize only for real invariants. - **Smallest safe decomposition.** If one worker is best, name why. + + Write these four items before architect fan-out and before code delegates. A missing item is not a start. 4. Delegate code-writing to a subagent using your configured feature model (default `grok-4.7-xhigh-fast`) with a specific scope (file paths, named data shape and its organizing structure per **principle-model-the-domain**, a state machine over scattered booleans, a table/registry over branching, a typed model over repeated shape assumptions, chosen before the delegate writes logic, and success criteria). Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section. When the implementation admits multiple valid shapes (error handling, abstraction layer, test structure), delegate via the **arena** skill instead so the runners surface the alternatives and the cross-judge guards the pick. Mandatory: no skip-with-reason escape, and Laziness Protocol does not override it (the gain is review separation, not lines saved). A subagent forbidden to spawn satisfies this by owning the diff directly with the same review separation. No "standing by" reply that waits on a nested agent. Comments per **Comments**. Surgical edits, re-ground against the source for upstream-derived files. Port shared-primitive improvements to all consumers and verify each. Commit liberally. -5. Verify on the matching surface. "Inconclusive" or wrong-surface is not a pass. Flag it. +5. Verify on the matching surface. "Inconclusive" or wrong-surface is not a pass. Flag it. For a block or device driver, that surface is the host render test plus the guest serial log, not protection-domain clippy alone. After a hardware delegate, review dword-aligned config cycles, message-signaled interrupt capability writes, and the device command bit before trusting clippy. 6. Rebase into small, ordered commits. Stack follow-ups. - Use the **sequence-verifiable-units** principle skill, building, verifying, and committing each small unit before the next. -7. If the design is contested, `interrogate` before shipping. + Use the **sequence-verifiable-units** principle skill, building, verifying, and committing each small unit before the next. Waiting to be asked for a commit does not waive those units. Land each green unit before the final push unless the operator waives that. +7. If the design is contested, `interrogate` before shipping. A green guest smoke does not cancel that step when how or arena left an explicit disagreement. A poll loop can hide a wrong interrupt record. 8. Run **Opening a PR**. Code-coupled work (one feature, one migration) goes to a single owner with the checkpoint inline. That owner fans out internally after the blocking phase. Parent-level fan-out is for slices that produce independent artifacts (audits, cross-subsystem investigations, competing experiments). Rewrite the checkpoint at phase boundaries. Spawn a fresh owner rather than chaining interrupts. diff --git a/pstack/skills/poteto-mode/playbooks/opening-a-pr.md b/pstack/skills/poteto-mode/playbooks/opening-a-pr.md index d729a7a06..ac42e3327 100644 --- a/pstack/skills/poteto-mode/playbooks/opening-a-pr.md +++ b/pstack/skills/poteto-mode/playbooks/opening-a-pr.md @@ -6,7 +6,7 @@ Invoked at the end of every other playbook. **Commits.** Commit liberally. Rebase into small, ordered commits before opening PRs. Each commit is a future PR: landable, ordered to tell the story. Amend when the fix belongs in a just-made commit. New commit when separable. Commit bodies don't restate the subject. -**PRs.** Run `/deslop` from `cursor-team-kit` over the diff before commit and `/no-comments` before review. Write every PR title, description, and commit body with `/technical-writing` (every layer except Diátaxis, and apply the STE vocabulary rules: one word per action, keep articles, a plain verb over `-ing` where one works), then apply `/unslop`. +**PRs.** Before create, run `gh pr view` for the branch, or `gh pr list --head`. If a pull request already exists, push and edit its title and body. Do not open a second one. Run `/deslop` from `cursor-team-kit` over the diff before commit and `/no-comments` before review. Write every PR title, description, and commit body with `/technical-writing` (every layer except Diátaxis, and apply the STE vocabulary rules: one word per action, keep articles, a plain verb over `-ing` where one works), then apply `/unslop`. **Titles.** Conventional Commits `type(scope): subject`, no trailing period. Type such as `feat`, `fix`, `docs`, `refactor`, `test`, `chore`, or `perf`. Scope is the area, such as `pstack` or `poteto-mode`. Subject is short, imperative, and names a real symbol when one carries the change, for example `fix(pstack): retarget opening-a-pr babysit trigger`. diff --git a/pstack/skills/principle-prove-it-works/SKILL.md b/pstack/skills/principle-prove-it-works/SKILL.md index 5dc14a3b0..b70dda05d 100644 --- a/pstack/skills/principle-prove-it-works/SKILL.md +++ b/pstack/skills/principle-prove-it-works/SKILL.md @@ -14,6 +14,7 @@ Check the real thing, not a proxy: - Check process liveness directly, not indirectly through derived state - Read the actual value, not a cached or derived representation - When verification fails, suspect the observation method before suspecting the system +- After a subagent reports success, rerun the same command. Only that exit code and the artifact count as proof ## Script the check when you can