From 0a1ae933f1594d7a8844c9e6b718b6f4f48ae673 Mon Sep 17 00:00:00 2001 From: wyattb Date: Thu, 29 Oct 2026 19:23:48 -0400 Subject: [PATCH] Handle epics in implement: groundwork once, stacked branches, integration check --- .../workspace-inherit/.claude/skills/implement/SKILL.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/software/application-software/argos/workspace-inherit/.claude/skills/implement/SKILL.md b/software/application-software/argos/workspace-inherit/.claude/skills/implement/SKILL.md index f24d293..4ea4e2d 100644 --- a/software/application-software/argos/workspace-inherit/.claude/skills/implement/SKILL.md +++ b/software/application-software/argos/workspace-inherit/.claude/skills/implement/SKILL.md @@ -1,14 +1,16 @@ --- name: implement -description: Implement an Argos ticket or task in its own worktree, test-first, ending in a commit, here or in a subagent (one per ticket, in parallel, for several). Use when the user asks to build, fix, or implement something in Argos. +description: Implement an Argos ticket or task in its own worktree, test-first, ending in a commit, here or in a subagent (one per ticket, in parallel, for several, including an epic's sub-issues). Use when the user asks to build, fix, or implement something in Argos. --- +0. **Epic?** List its sub-issues and what blocks each (`gh api repos/Northeastern-Electric-Racing/Argos/issues//sub_issues`, then `.../issues//dependencies/blocked_by` for each) and treat each as a ticket below. Groundwork they all need (a spike branch merged in with `merge --squash`, new dependencies, test setup such as mocks) goes once, as the first commit of the first unblocked ticket's branch. Branch a blocked ticket from its blocker's branch instead of `origin/develop`, once that groundwork is committed. 1. **Worktree.** Get the ticket's branch (`{issue-number}-{kebab-case-title}`) with the `new-worktree` skill, based on `origin/develop`. Make every change in `worktrees/argos//`, never in `worktrees/argos/develop/`, while staying at the workspace root: edit files by path, `git -C worktrees/argos/ …` for git, and one-off subshells for the rest. Run `(cd worktrees/argos//angular-client && npm ci)` before touching the client. -2. **Hand off?** Unless the user already chose, ask whether a subagent should do the rest, and recommend one: one per ticket, in parallel, when there are several (step 1 for each first), or one for work long enough to fill this conversation. Tell it the ticket, its worktree's absolute path, and to follow this skill from step 3, change files only under that path (`git -C` for git), name temp files after the branch, stop the clients it starts, and report its commits, checks, and the port and browser it used. Never turn on the harness's own worktree isolation (`new-worktree` says why). Then confirm its commits with `git -C log origin/develop..` and pass its report on. +2. **Hand off?** Unless the user already chose, ask whether a subagent should do the rest, and recommend one: one per ticket, in parallel, when there are several (step 1 for each first), or one for work long enough to fill this conversation. Tell it the ticket, its worktree's absolute path, and to follow this skill from step 3, change files only under that path (`git -C` for git), name temp files after the branch, stop the clients it starts, and report its commits, checks, and the port and browser it used. Agents in parallel get separate files to change, and run browser checks one at a time: Playwright MCP servers share one browser profile unless started with `--isolated`. Never turn on the harness's own worktree isolation (`new-worktree` says why). Then confirm its commits with `git -C log ..` (`origin/develop`, or its blocker's branch) and pass its report on. 3. **Understand.** Read the issue (`gh issue view --comments`), the code involved, and `docs/CONTEXT.md` terms. 4. **Build test-first**, one behavior at a time: a failing test, the least code to pass it, refactor while green. Test through public interfaces; mock only at system boundaries. 5. **Check.** - Frontend, in `(cd worktrees/argos//angular-client && …)`: `npx ng test --include='src/**/thing.spec.ts' --watch=false` while iterating; at the end `npx ng test --watch=false` (bare `ng test` blocks), then `npx prettier --check "src/**/*.{ts,html,scss}" && npx ng lint`. - Backend, in `(cd worktrees/argos//scylla-server && …)`: `cargo build` and single tests while iterating; `cargo test` at the end. - UI changes: verify in the running app with `run-local `. -6. **Commit** with `/commit`. Don't push or open a PR unless asked; that's `/open-pr`. +6. **Commit** with `/commit`. Don't push or open a PR unless asked; that's `/open-pr`. A blocked ticket's PR waits for its blocker's to merge. +7. **Integrate (epics).** Rebase each blocked branch onto its blocker, in order, rerun step 5's checks on the last one, and click through it yourself with `run-local `: subagents check their own slice, not how the slices fit together.