@pennyfarthing/core 7.4.1 → 7.6.0
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/package.json +1 -1
- package/packages/core/dist/cli/commands/doctor-legacy.test.d.ts +13 -0
- package/packages/core/dist/cli/commands/doctor-legacy.test.d.ts.map +1 -0
- package/packages/core/dist/cli/commands/doctor-legacy.test.js +207 -0
- package/packages/core/dist/cli/commands/doctor-legacy.test.js.map +1 -0
- package/packages/core/dist/cli/commands/doctor.d.ts +16 -0
- package/packages/core/dist/cli/commands/doctor.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/doctor.js +130 -2
- package/packages/core/dist/cli/commands/doctor.js.map +1 -1
- package/packages/core/dist/cli/commands/init.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/init.js +17 -27
- package/packages/core/dist/cli/commands/init.js.map +1 -1
- package/packages/core/dist/cli/commands/update.d.ts.map +1 -1
- package/packages/core/dist/cli/commands/update.js +21 -52
- package/packages/core/dist/cli/commands/update.js.map +1 -1
- package/packages/core/dist/cli/utils/symlinks.d.ts +15 -0
- package/packages/core/dist/cli/utils/symlinks.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/symlinks.js +148 -2
- package/packages/core/dist/cli/utils/symlinks.js.map +1 -1
- package/packages/core/dist/cli/utils/themes.d.ts.map +1 -1
- package/packages/core/dist/cli/utils/themes.js +9 -0
- package/packages/core/dist/cli/utils/themes.js.map +1 -1
- package/pennyfarthing-dist/agents/dev.md +29 -24
- package/pennyfarthing-dist/agents/handoff.md +42 -119
- package/pennyfarthing-dist/agents/reviewer.md +32 -37
- package/pennyfarthing-dist/agents/sm-handoff.md +43 -66
- package/pennyfarthing-dist/agents/sm.md +52 -35
- package/pennyfarthing-dist/agents/tea.md +25 -8
- package/pennyfarthing-dist/agents/testing-runner.md +4 -4
- package/pennyfarthing-dist/commands/architect.md +0 -55
- package/pennyfarthing-dist/commands/dev.md +1 -54
- package/pennyfarthing-dist/commands/devops.md +0 -52
- package/pennyfarthing-dist/commands/health-check.md +33 -0
- package/pennyfarthing-dist/commands/orchestrator.md +0 -49
- package/pennyfarthing-dist/commands/pm.md +0 -53
- package/pennyfarthing-dist/commands/reviewer.md +1 -58
- package/pennyfarthing-dist/commands/sm.md +1 -64
- package/pennyfarthing-dist/commands/sprint.md +133 -0
- package/pennyfarthing-dist/commands/standalone.md +194 -0
- package/pennyfarthing-dist/commands/tea.md +1 -57
- package/pennyfarthing-dist/commands/tech-writer.md +0 -46
- package/pennyfarthing-dist/commands/theme-maker.md +10 -5
- package/pennyfarthing-dist/commands/ux-designer.md +0 -55
- package/pennyfarthing-dist/guides/XML-TAGS.md +156 -0
- package/pennyfarthing-dist/guides/agent-behavior.md +64 -38
- package/pennyfarthing-dist/guides/measurement-framework.md +210 -0
- package/pennyfarthing-dist/personas/themes/a-team.yaml +130 -0
- package/pennyfarthing-dist/personas/themes/alice-in-wonderland.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/ancient-strategists.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/arcane.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/better-call-saul.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/big-lebowski.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/black-sails.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/blade-runner.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/bobiverse.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/breaking-bad.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/count-of-monte-cristo.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/cowboy-bebop.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/deadwood.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/dickens.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/discworld.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/doctor-who.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/don-quixote.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/dune.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/enlightenment-thinkers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/expeditionary-force.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/futurama.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/game-of-thrones.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/gilligans-island.yaml +131 -1
- package/pennyfarthing-dist/personas/themes/gothic-literature.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/great-gatsby.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/hannibal.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/harry-potter.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/his-dark-materials.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/inspector-morse.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/jane-austen.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/legion-of-doom.yaml +130 -0
- package/pennyfarthing-dist/personas/themes/mad-max.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/moby-dick.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/neuromancer.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/parks-and-rec.yaml +130 -0
- package/pennyfarthing-dist/personas/themes/princess-bride.yaml +130 -0
- package/pennyfarthing-dist/personas/themes/renaissance-masters.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/russian-masters.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/sandman.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/scientific-revolutionaries.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/shakespeare.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/star-trek-tng.yaml +139 -3
- package/pennyfarthing-dist/personas/themes/star-trek-tos.yaml +124 -0
- package/pennyfarthing-dist/personas/themes/star-wars.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/succession.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/superfriends.yaml +131 -1
- package/pennyfarthing-dist/personas/themes/ted-lasso.yaml +131 -1
- package/pennyfarthing-dist/personas/themes/the-americans.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-expanse.yaml +131 -1
- package/pennyfarthing-dist/personas/themes/the-good-place.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-matrix.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/the-sopranos.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/west-wing.yaml +6 -6
- package/pennyfarthing-dist/personas/themes/world-explorers.yaml +1 -1
- package/pennyfarthing-dist/personas/themes/wwii-leaders.yaml +1 -1
- package/pennyfarthing-dist/scripts/core/check-context.sh +23 -6
- package/pennyfarthing-dist/scripts/core/phase-check-start.sh +95 -0
- package/pennyfarthing-dist/scripts/git/release.sh +3 -2
- package/pennyfarthing-dist/scripts/health/drift-detection.sh +162 -0
- package/pennyfarthing-dist/scripts/hooks/bell-mode-hook.sh +87 -0
- package/pennyfarthing-dist/scripts/jira/create-jira-epic.sh +1 -1
- package/pennyfarthing-dist/scripts/misc/deploy.sh +1 -1
- package/pennyfarthing-dist/scripts/misc/statusline.sh +25 -32
- package/pennyfarthing-dist/scripts/sprint/import-epic-to-future.mjs +377 -0
- package/pennyfarthing-dist/scripts/sprint/import-epic-to-future.sh +9 -0
- package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.js +492 -0
- package/pennyfarthing-dist/scripts/theme/compute-theme-tiers.sh +8 -200
- package/pennyfarthing-dist/scripts/workflow/list-workflows.sh +38 -5
- package/pennyfarthing-dist/scripts/workflow/phase-owner.sh +40 -0
- package/pennyfarthing-dist/skills/theme-creation/SKILL.md +12 -7
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-04-final-validation.md +11 -3
- package/pennyfarthing-dist/workflows/epics-and-stories/steps/step-05-import-to-future.md +122 -0
- package/pennyfarthing-dist/workflows/epics-and-stories/workflow.yaml +3 -2
- package/packages/core/dist/workflow/generic-handoff.d.ts +0 -281
- package/packages/core/dist/workflow/generic-handoff.d.ts.map +0 -1
- package/packages/core/dist/workflow/generic-handoff.js +0 -411
- package/packages/core/dist/workflow/generic-handoff.js.map +0 -1
- package/packages/core/dist/workflow/generic-handoff.test.d.ts +0 -21
- package/packages/core/dist/workflow/generic-handoff.test.d.ts.map +0 -1
- package/packages/core/dist/workflow/generic-handoff.test.js +0 -499
- package/packages/core/dist/workflow/generic-handoff.test.js.map +0 -1
|
@@ -2,69 +2,6 @@
|
|
|
2
2
|
description: Scrum Master - Story coordination and sprint management
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
<agent-activation>
|
|
6
|
-
**FIRST:** Use Bash tool to run:
|
|
7
5
|
```bash
|
|
8
|
-
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/
|
|
6
|
+
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/phase-check-start.sh "sm"
|
|
9
7
|
```
|
|
10
|
-
This finds the project root and loads your persona. Adopt the character shown in the output.
|
|
11
|
-
|
|
12
|
-
Then load and follow `.pennyfarthing/agents/sm.md`
|
|
13
|
-
</agent-activation>
|
|
14
|
-
|
|
15
|
-
<agent-exit>
|
|
16
|
-
On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
|
|
17
|
-
</agent-exit>
|
|
18
|
-
|
|
19
|
-
<purpose>
|
|
20
|
-
Coordinator who manages story flow from backlog through completion, handling decisions and handoffs.
|
|
21
|
-
</purpose>
|
|
22
|
-
|
|
23
|
-
<when-to-use>
|
|
24
|
-
- New story starting (backlog selection, context creation)
|
|
25
|
-
- Story completion (summary writing, archival)
|
|
26
|
-
- Workflow status checks during in-progress work
|
|
27
|
-
- Blockers requiring story management decisions
|
|
28
|
-
</when-to-use>
|
|
29
|
-
|
|
30
|
-
<workflow-position>
|
|
31
|
-
**TDD Flow:** **SM** → TEA → Dev → Reviewer → **SM** (finish)
|
|
32
|
-
|
|
33
|
-
| Entry | Exit |
|
|
34
|
-
|-------|------|
|
|
35
|
-
| Story selected or completion ready | After TEA (NEW_WORK) or after Reviewer approval (FINISH) |
|
|
36
|
-
</workflow-position>
|
|
37
|
-
|
|
38
|
-
<workflow-steps>
|
|
39
|
-
1. Helper checks workflow status (finish vs. new work)
|
|
40
|
-
2. For new work: Helper researches backlog, I select story
|
|
41
|
-
3. Helper summarizes story files, I write technical context
|
|
42
|
-
4. Helper sets up session, branches, and Jira claim
|
|
43
|
-
5. Handoff to TEA (3+ pts) or Dev (1-2 pts trivial work)
|
|
44
|
-
6. On completion: Helper verifies PR, I write summary
|
|
45
|
-
7. Helper archives and transitions Jira to Done
|
|
46
|
-
</workflow-steps>
|
|
47
|
-
|
|
48
|
-
<scale-routing>
|
|
49
|
-
| Points | Routing | Workflow |
|
|
50
|
-
|--------|---------|----------|
|
|
51
|
-
| 1-2 pts (trivial) | Dev | SM → Dev (skip TEA) |
|
|
52
|
-
| 3-5 pts (standard) | TEA | SM → TEA → Dev |
|
|
53
|
-
| 8+ pts (complex) | TEA | SM → TEA → Dev |
|
|
54
|
-
</scale-routing>
|
|
55
|
-
|
|
56
|
-
<responsibilities>
|
|
57
|
-
| I Do (Opus) | Helper Does (Haiku) |
|
|
58
|
-
|-------------|---------------------|
|
|
59
|
-
| Select and confirm stories | Scan backlog, research options |
|
|
60
|
-
| Write technical context docs | Summarize files, check Jira |
|
|
61
|
-
| Write completion summaries | Archive sessions, update YAML |
|
|
62
|
-
| Make workflow decisions | Execute mechanical steps |
|
|
63
|
-
</responsibilities>
|
|
64
|
-
|
|
65
|
-
<reference>
|
|
66
|
-
- **Agent:** `.pennyfarthing/agents/sm.md`
|
|
67
|
-
- **Sidecar:** `.claude/project/agents/sm-sidecar/`
|
|
68
|
-
- **Skills:** `/sprint-context`, `/story-management`
|
|
69
|
-
- **Subagents:** `workflow-status-check`, `generic-sm-setup`, `generic-sm-finish`, `sm-file-summary`, `sm-handoff`
|
|
70
|
-
</reference>
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Sprint status, backlog, and story management - check status, find work, archive completed stories
|
|
3
|
+
args: "[status|backlog|work|archive|new|future|promote] [args...]"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sprint Management
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Manage sprint workflow: check status, view backlog, start work, archive completed stories, and promote future epics. This is the primary interface for sprint operations.
|
|
10
|
+
</purpose>
|
|
11
|
+
|
|
12
|
+
<critical>
|
|
13
|
+
Never manually edit `sprint/current-sprint.yaml`. Always use the provided scripts.
|
|
14
|
+
</critical>
|
|
15
|
+
|
|
16
|
+
## Commands
|
|
17
|
+
|
|
18
|
+
### `/sprint` or `/sprint status [filter]`
|
|
19
|
+
|
|
20
|
+
Show current sprint status with story counts and points.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
.pennyfarthing/scripts/core/run.sh sprint/sprint-status.sh [filter]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
| Filter | Description |
|
|
27
|
+
|--------|-------------|
|
|
28
|
+
| (none) | All stories |
|
|
29
|
+
| `todo` | Backlog only |
|
|
30
|
+
| `in-progress` | Work in progress |
|
|
31
|
+
| `done` | Completed stories |
|
|
32
|
+
|
|
33
|
+
### `/sprint backlog`
|
|
34
|
+
|
|
35
|
+
Show available stories ready for work, grouped by epic.
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
.pennyfarthing/scripts/core/run.sh sprint/available-stories.sh
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### `/sprint work [story-id|epic-id|next]`
|
|
42
|
+
|
|
43
|
+
Start work on a story. Primary entry point for development.
|
|
44
|
+
|
|
45
|
+
| Argument | Behavior |
|
|
46
|
+
|----------|----------|
|
|
47
|
+
| (none) | Interactive selection from backlog |
|
|
48
|
+
| `MSSCI-XXXXX` | Start specific story |
|
|
49
|
+
| `epic-XX` | Start first available story in epic |
|
|
50
|
+
| `next` | Auto-select highest priority story |
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Check if story is available
|
|
54
|
+
.pennyfarthing/scripts/core/run.sh sprint/check-story.sh <story-id>
|
|
55
|
+
|
|
56
|
+
# Then load SM to begin work
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
<workflow>
|
|
60
|
+
When starting work, this command:
|
|
61
|
+
1. Validates story availability
|
|
62
|
+
2. Loads SM agent
|
|
63
|
+
3. SM creates context and claims Jira
|
|
64
|
+
4. Hands off to TEA (tdd) or Dev (trivial)
|
|
65
|
+
</workflow>
|
|
66
|
+
|
|
67
|
+
### `/sprint archive <story-id> [pr-number] [--apply]`
|
|
68
|
+
|
|
69
|
+
Archive a completed story.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
.pennyfarthing/scripts/core/run.sh sprint/archive-story.sh <story-id> [pr-number] [--apply]
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
| Option | Description |
|
|
76
|
+
|--------|-------------|
|
|
77
|
+
| `--apply` | Also remove from current-sprint.yaml |
|
|
78
|
+
|
|
79
|
+
### `/sprint new <yyww> <jira-id> <start> <end> "<goal>"`
|
|
80
|
+
|
|
81
|
+
Initialize a new sprint.
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
.pennyfarthing/scripts/core/run.sh sprint/new-sprint.sh 2605 277 2026-02-03 2026-02-16 "Sprint goal"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### `/sprint future [--epic EPIC_ID]`
|
|
88
|
+
|
|
89
|
+
Show future work available for promotion.
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
.pennyfarthing/scripts/core/run.sh sprint/list-future.sh [--epic epic-XX]
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `/sprint promote <epic-id>`
|
|
96
|
+
|
|
97
|
+
Move an epic from future.yaml to current sprint.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
.pennyfarthing/scripts/core/run.sh sprint/promote-epic.sh epic-XX
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Quick Reference
|
|
104
|
+
|
|
105
|
+
| Command | Action |
|
|
106
|
+
|---------|--------|
|
|
107
|
+
| `/sprint` | Show sprint status |
|
|
108
|
+
| `/sprint status todo` | Show backlog |
|
|
109
|
+
| `/sprint backlog` | Available stories |
|
|
110
|
+
| `/sprint work` | Interactive start |
|
|
111
|
+
| `/sprint work next` | Start highest priority |
|
|
112
|
+
| `/sprint work MSSCI-XXX` | Start specific story |
|
|
113
|
+
| `/sprint archive MSSCI-XXX` | Archive completed |
|
|
114
|
+
| `/sprint future` | Show future work |
|
|
115
|
+
| `/sprint promote epic-XX` | Promote to sprint |
|
|
116
|
+
|
|
117
|
+
## Aliases
|
|
118
|
+
|
|
119
|
+
- `/new-work` is an alias for `/sprint work`
|
|
120
|
+
|
|
121
|
+
## Related
|
|
122
|
+
|
|
123
|
+
| Skill | Purpose |
|
|
124
|
+
|-------|---------|
|
|
125
|
+
| `/jira` | Jira operations (create, sync, claim) |
|
|
126
|
+
| `/story` | Story creation, sizing, finish |
|
|
127
|
+
| `/sm` | Scrum Master agent for coordination |
|
|
128
|
+
|
|
129
|
+
<reference>
|
|
130
|
+
- **Skill:** `.claude/skills/sprint/skill.md`
|
|
131
|
+
- **Scripts:** `.pennyfarthing/scripts/sprint/`
|
|
132
|
+
- **Data:** `sprint/current-sprint.yaml`
|
|
133
|
+
</reference>
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Wrap current changes into a standalone Jira story, branch, PR, and merge
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Standalone Story
|
|
6
|
+
|
|
7
|
+
Quickly wrap dirty changes into a tracked Jira story without the full sprint/workflow ceremony. Creates a Jira ticket, feature branch, commits, pushes, creates PR, and merges.
|
|
8
|
+
|
|
9
|
+
<purpose>
|
|
10
|
+
Fast path for shipping completed work that deserves tracking but doesn't need story setup upfront.
|
|
11
|
+
</purpose>
|
|
12
|
+
|
|
13
|
+
<when-to-use>
|
|
14
|
+
- You've done exploratory work that turned into something shippable
|
|
15
|
+
- A bug fix or feature emerged during other work
|
|
16
|
+
- Process improvements that should be tracked
|
|
17
|
+
- Any change worth a Jira ticket but not a full sprint story
|
|
18
|
+
</when-to-use>
|
|
19
|
+
|
|
20
|
+
<usage>
|
|
21
|
+
```bash
|
|
22
|
+
# Interactive: prompts for title and description
|
|
23
|
+
/standalone
|
|
24
|
+
|
|
25
|
+
# With title
|
|
26
|
+
/standalone "Add drift detection script"
|
|
27
|
+
|
|
28
|
+
# With title and points
|
|
29
|
+
/standalone "Add drift detection script" 2
|
|
30
|
+
```
|
|
31
|
+
</usage>
|
|
32
|
+
|
|
33
|
+
<workflow>
|
|
34
|
+
1. Verify dirty files exist (abort if clean)
|
|
35
|
+
2. Show changes and confirm with user
|
|
36
|
+
3. Create Jira story (prompts for title/description if not provided)
|
|
37
|
+
4. Add story to current sprint and mark Done
|
|
38
|
+
5. Create feature branch: `feat/MSSCI-XXXXX-{slug}`
|
|
39
|
+
6. Stage and commit changes
|
|
40
|
+
7. Push branch
|
|
41
|
+
8. Create PR with summary
|
|
42
|
+
9. Merge PR (squash) and delete branch
|
|
43
|
+
10. Return to develop
|
|
44
|
+
</workflow>
|
|
45
|
+
|
|
46
|
+
## Execution
|
|
47
|
+
|
|
48
|
+
### Step 1: Pre-Flight
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Abort if clean
|
|
52
|
+
git diff --quiet && git diff --cached --quiet && {
|
|
53
|
+
echo "ERROR: No changes to commit."
|
|
54
|
+
exit 1
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
echo "=== Changes to Commit ==="
|
|
58
|
+
git status --short
|
|
59
|
+
git diff --stat
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Step 2: Gather Story Info
|
|
63
|
+
|
|
64
|
+
If title not provided, prompt:
|
|
65
|
+
- **Title:** Short summary (becomes Jira summary and commit message)
|
|
66
|
+
- **Description:** What was done (becomes Jira description and PR body)
|
|
67
|
+
- **Points:** Story points (default: 2)
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Defaults
|
|
71
|
+
TITLE="${1:-}"
|
|
72
|
+
POINTS="${2:-2}"
|
|
73
|
+
|
|
74
|
+
if [ -z "$TITLE" ]; then
|
|
75
|
+
# Prompt user for title
|
|
76
|
+
echo "Enter story title:"
|
|
77
|
+
read TITLE
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# Generate description from changed files
|
|
81
|
+
CHANGED_FILES=$(git status --porcelain | awk '{print $2}')
|
|
82
|
+
DESCRIPTION="## Changes
|
|
83
|
+
$(git diff --stat)
|
|
84
|
+
|
|
85
|
+
## Files
|
|
86
|
+
$(echo "$CHANGED_FILES" | head -20)"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Step 3: Create Jira Story
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Create Jira story
|
|
93
|
+
JIRA_OUTPUT=$(jira issue create \
|
|
94
|
+
--project MSSCI \
|
|
95
|
+
--type Story \
|
|
96
|
+
--summary "$TITLE" \
|
|
97
|
+
--body "$DESCRIPTION" \
|
|
98
|
+
--label pennyfarthing \
|
|
99
|
+
--custom story-points="$POINTS" \
|
|
100
|
+
--no-input 2>&1)
|
|
101
|
+
|
|
102
|
+
JIRA_KEY=$(echo "$JIRA_OUTPUT" | grep -oE 'MSSCI-[0-9]+' | head -1)
|
|
103
|
+
|
|
104
|
+
if [ -z "$JIRA_KEY" ]; then
|
|
105
|
+
echo "ERROR: Failed to create Jira story"
|
|
106
|
+
echo "$JIRA_OUTPUT"
|
|
107
|
+
exit 1
|
|
108
|
+
fi
|
|
109
|
+
|
|
110
|
+
echo "Created: $JIRA_KEY"
|
|
111
|
+
|
|
112
|
+
# Add to sprint and mark done
|
|
113
|
+
jira sprint add 276 "$JIRA_KEY"
|
|
114
|
+
jira issue move "$JIRA_KEY" "Done"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Step 4: Create Branch and Commit
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# Generate slug from title
|
|
121
|
+
SLUG=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | tr ' ' '-' | tr -cd 'a-z0-9-' | cut -c1-30)
|
|
122
|
+
|
|
123
|
+
# Stash, update develop, create branch
|
|
124
|
+
git stash push -m "standalone-wip-$(date +%s)"
|
|
125
|
+
git checkout develop && git pull origin develop
|
|
126
|
+
BRANCH="feat/${JIRA_KEY}-${SLUG}"
|
|
127
|
+
git checkout -b "$BRANCH"
|
|
128
|
+
git stash pop
|
|
129
|
+
|
|
130
|
+
# Stage and commit
|
|
131
|
+
git add .
|
|
132
|
+
git commit -m "feat: ${TITLE} (${JIRA_KEY})
|
|
133
|
+
|
|
134
|
+
${DESCRIPTION}
|
|
135
|
+
|
|
136
|
+
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Step 5: Push and Create PR
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
git push -u origin "$BRANCH"
|
|
143
|
+
|
|
144
|
+
gh pr create \
|
|
145
|
+
--title "feat: ${TITLE} (${JIRA_KEY})" \
|
|
146
|
+
--body "## Summary
|
|
147
|
+
${DESCRIPTION}
|
|
148
|
+
|
|
149
|
+
## Jira
|
|
150
|
+
[${JIRA_KEY}](https://1898andco.atlassian.net/browse/${JIRA_KEY})
|
|
151
|
+
|
|
152
|
+
## Test plan
|
|
153
|
+
- [x] Changes verified locally
|
|
154
|
+
|
|
155
|
+
🤖 Generated with [Claude Code](https://claude.com/claude-code)"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Step 6: Merge and Cleanup
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Get PR number and merge
|
|
162
|
+
PR_URL=$(gh pr view --json url -q '.url')
|
|
163
|
+
gh pr merge --squash --delete-branch
|
|
164
|
+
|
|
165
|
+
# Return to develop
|
|
166
|
+
git checkout develop
|
|
167
|
+
git pull origin develop
|
|
168
|
+
|
|
169
|
+
echo "✅ Done: $JIRA_KEY merged"
|
|
170
|
+
echo " Jira: https://1898andco.atlassian.net/browse/$JIRA_KEY"
|
|
171
|
+
echo " PR: $PR_URL"
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Safety
|
|
175
|
+
|
|
176
|
+
- **NEVER commit directly to develop**
|
|
177
|
+
- **Never force push**
|
|
178
|
+
- **Never commit secrets** (.env, credentials)
|
|
179
|
+
- **Abort if working directory is clean**
|
|
180
|
+
- **Confirm changes before proceeding**
|
|
181
|
+
|
|
182
|
+
## Comparison
|
|
183
|
+
|
|
184
|
+
| Command | Tracking | Branch | PR | Use For |
|
|
185
|
+
|---------|----------|--------|-----|---------|
|
|
186
|
+
| `/chore` | None | chore/* | No | Quick maintenance |
|
|
187
|
+
| `/standalone` | Jira | feat/* | Yes | Trackable features |
|
|
188
|
+
| `/sprint work` | Jira + Sprint | feat/* | Yes | Planned sprint work |
|
|
189
|
+
|
|
190
|
+
<related>
|
|
191
|
+
- `/chore` - Quick commits without Jira tracking
|
|
192
|
+
- `/sprint work` - Full sprint workflow with story setup
|
|
193
|
+
- `/git-cleanup` - Organize multiple changes into groups
|
|
194
|
+
</related>
|
|
@@ -2,62 +2,6 @@
|
|
|
2
2
|
description: Test Engineer/Architect - Test strategy and TDD
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
<agent-activation>
|
|
6
|
-
**FIRST:** Use Bash tool to run:
|
|
7
5
|
```bash
|
|
8
|
-
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/
|
|
6
|
+
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/phase-check-start.sh "tea"
|
|
9
7
|
```
|
|
10
|
-
This finds the project root and loads your persona. Adopt the character shown in the output.
|
|
11
|
-
|
|
12
|
-
Then load and follow `.pennyfarthing/agents/tea.md`
|
|
13
|
-
</agent-activation>
|
|
14
|
-
|
|
15
|
-
<agent-exit>
|
|
16
|
-
On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
|
|
17
|
-
</agent-exit>
|
|
18
|
-
|
|
19
|
-
<purpose>
|
|
20
|
-
Quality guardian who designs tests before implementation using TDD.
|
|
21
|
-
</purpose>
|
|
22
|
-
|
|
23
|
-
<when-to-use>
|
|
24
|
-
- After SM sets up story context with acceptance criteria
|
|
25
|
-
- When implementing new features (full TDD flow)
|
|
26
|
-
- When adding significant behavioral changes
|
|
27
|
-
- Before Dev phase (RED → GREEN → Refactor)
|
|
28
|
-
</when-to-use>
|
|
29
|
-
|
|
30
|
-
<workflow-position>
|
|
31
|
-
**TDD Flow:** SM → **TEA** → Dev → Reviewer
|
|
32
|
-
|
|
33
|
-
| Entry | Exit |
|
|
34
|
-
|-------|------|
|
|
35
|
-
| After SM context setup | To Dev with failing tests (RED) or bypass documented |
|
|
36
|
-
</workflow-position>
|
|
37
|
-
|
|
38
|
-
<workflow-steps>
|
|
39
|
-
1. Read story and acceptance criteria from session file
|
|
40
|
-
2. Determine if tests are needed (assess chore bypass criteria)
|
|
41
|
-
3. If tests needed: write failing tests covering each AC
|
|
42
|
-
4. Verify RED state (tests failing, ready for Dev)
|
|
43
|
-
5. Document assessment in session file
|
|
44
|
-
6. Have Helper verify tests and update handoff
|
|
45
|
-
7. Hand off to Dev: "Tests are RED. Make them GREEN."
|
|
46
|
-
</workflow-steps>
|
|
47
|
-
|
|
48
|
-
<responsibilities>
|
|
49
|
-
| I Do (Opus) | Helper Does (Haiku) |
|
|
50
|
-
|-------------|---------------------|
|
|
51
|
-
| Read ACs, plan test strategy | Run tests, report RED/GREEN status |
|
|
52
|
-
| Write test code for all ACs | Gather test execution results |
|
|
53
|
-
| Judge if tests can be bypassed | Update session for Dev handoff |
|
|
54
|
-
| Assess coverage vs complexity | Execute mechanical checks |
|
|
55
|
-
</responsibilities>
|
|
56
|
-
|
|
57
|
-
<reference>
|
|
58
|
-
- **Agent:** `.pennyfarthing/agents/tea.md`
|
|
59
|
-
- **Sidecar:** `.claude/project/agents/tea-sidecar/`
|
|
60
|
-
- **Skills:** `/testing`
|
|
61
|
-
- **Subagents:** `testing-runner.md`, `tea-handoff.md`
|
|
62
|
-
- **Bypass:** Docs, config, dependencies
|
|
63
|
-
</reference>
|
|
@@ -2,52 +2,6 @@
|
|
|
2
2
|
description: Technical Writer - Documentation creation and maintenance
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
<agent-activation>
|
|
6
|
-
**FIRST:** Use Bash tool to run:
|
|
7
5
|
```bash
|
|
8
6
|
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/agent-session.sh start "tech-writer"
|
|
9
7
|
```
|
|
10
|
-
This finds the project root and loads your persona. Adopt the character shown in the output.
|
|
11
|
-
|
|
12
|
-
Then load and follow `.pennyfarthing/agents/tech-writer.md`
|
|
13
|
-
</agent-activation>
|
|
14
|
-
|
|
15
|
-
<agent-exit>
|
|
16
|
-
On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
|
|
17
|
-
</agent-exit>
|
|
18
|
-
|
|
19
|
-
<purpose>
|
|
20
|
-
Documentation specialist who creates and maintains clear, accurate technical documentation outside the TDD flow.
|
|
21
|
-
</purpose>
|
|
22
|
-
|
|
23
|
-
<when-to-use>
|
|
24
|
-
- After Dev completes feature implementation
|
|
25
|
-
- API documentation tasks and updates
|
|
26
|
-
- User guide and README creation
|
|
27
|
-
- Architecture documentation needs
|
|
28
|
-
- Developer onboarding documentation
|
|
29
|
-
</when-to-use>
|
|
30
|
-
|
|
31
|
-
<constraints>
|
|
32
|
-
**Tech Writer does NOT write code.** Strictly limited to:
|
|
33
|
-
- Reading and analyzing existing code to understand it
|
|
34
|
-
- Creating and updating documentation (markdown, README, guides, API docs)
|
|
35
|
-
- Writing code examples and snippets for documentation purposes only
|
|
36
|
-
- Suggesting improvements to code comments
|
|
37
|
-
- **Handoff to Dev:** If docs reveal missing code comments, inconsistent naming, or missing features, document the need and let Dev handle code changes.
|
|
38
|
-
</constraints>
|
|
39
|
-
|
|
40
|
-
<key-workflows>
|
|
41
|
-
1. **API Documentation** - Comprehensive endpoint documentation with requests, responses, and error codes
|
|
42
|
-
2. **User Guides** - Step-by-step guides with examples and troubleshooting
|
|
43
|
-
3. **README Files** - Overview, installation, usage, configuration, examples, contributing
|
|
44
|
-
4. **Architecture Documentation** - System design and patterns reference
|
|
45
|
-
5. **Developer Onboarding** - Getting started guides and project structure docs
|
|
46
|
-
</key-workflows>
|
|
47
|
-
|
|
48
|
-
<reference>
|
|
49
|
-
- **Agent:** `.pennyfarthing/agents/tech-writer.md`
|
|
50
|
-
- **Sidecar:** `.claude/project/agents/tech-writer-sidecar/`
|
|
51
|
-
- **Skills:** `/architecture`, `/documentation-patterns`
|
|
52
|
-
- **Docs Locations:** `API/docs/`, `UI/docs/`
|
|
53
|
-
</reference>
|
|
@@ -190,7 +190,7 @@ Examples:
|
|
|
190
190
|
|
|
191
191
|
#### Visual Descriptions
|
|
192
192
|
|
|
193
|
-
The `visual` field provides a portrait prompt for image generation. These descriptions are used by
|
|
193
|
+
The `visual` field provides a portrait prompt for image generation. These descriptions are used by `./scripts/generate-portraits.sh` to create woodcut-style portraits.
|
|
194
194
|
|
|
195
195
|
**Guidelines:**
|
|
196
196
|
- Focus on physical appearance, distinctive features, and visual props
|
|
@@ -344,20 +344,25 @@ questions:
|
|
|
344
344
|
**If Yes:** Run the portrait generator:
|
|
345
345
|
|
|
346
346
|
```bash
|
|
347
|
-
|
|
347
|
+
./scripts/generate-portraits.sh --theme {theme-name}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
**Generate a single agent's portrait:**
|
|
351
|
+
```bash
|
|
352
|
+
./scripts/generate-portraits.sh --theme {theme-name} --role {role}
|
|
348
353
|
```
|
|
349
354
|
|
|
350
355
|
**Requirements:**
|
|
351
|
-
- Python 3 with: `pip install diffusers transformers accelerate torch pillow pyyaml tqdm`
|
|
356
|
+
- Python 3 venv at `.venv/` with: `pip install diffusers transformers accelerate torch pillow pyyaml tqdm`
|
|
352
357
|
- Apple Silicon Mac (MPS) or NVIDIA GPU (CUDA)
|
|
353
358
|
- First run downloads ~6.5GB SDXL model
|
|
354
359
|
|
|
355
360
|
**Dry run first:** To preview what will be generated:
|
|
356
361
|
```bash
|
|
357
|
-
|
|
362
|
+
./scripts/generate-portraits.sh --theme {theme-name} --dry-run
|
|
358
363
|
```
|
|
359
364
|
|
|
360
|
-
**Output:** `pennyfarthing-dist/personas/portraits/{theme}/{
|
|
365
|
+
**Output:** `pennyfarthing-dist/personas/portraits/{theme}/{shortName}-{OCEAN}.png`
|
|
361
366
|
|
|
362
367
|
**If generation fails:** The theme file is still valid - portraits can be generated later manually.
|
|
363
368
|
|
|
@@ -2,61 +2,6 @@
|
|
|
2
2
|
description: UX Designer - User experience design and UI patterns
|
|
3
3
|
---
|
|
4
4
|
|
|
5
|
-
<agent-activation>
|
|
6
|
-
**FIRST:** Use Bash tool to run:
|
|
7
5
|
```bash
|
|
8
6
|
d="$PWD"; while [[ ! -d "$d/.claude" ]] && [[ "$d" != "/" ]]; do d="$(dirname "$d")"; done; "$d/.pennyfarthing/scripts/core/run.sh" core/agent-session.sh start "ux-designer"
|
|
9
7
|
```
|
|
10
|
-
This finds the project root and loads your persona. Adopt the character shown in the output.
|
|
11
|
-
|
|
12
|
-
Then load and follow `.pennyfarthing/agents/ux-designer.md`
|
|
13
|
-
</agent-activation>
|
|
14
|
-
|
|
15
|
-
<agent-exit>
|
|
16
|
-
On exit: Capture learnings to sidecar, run `run.sh core/agent-session.sh stop`
|
|
17
|
-
</agent-exit>
|
|
18
|
-
|
|
19
|
-
<purpose>
|
|
20
|
-
Design user experiences and UI patterns that developers implement.
|
|
21
|
-
</purpose>
|
|
22
|
-
|
|
23
|
-
<when-to-use>
|
|
24
|
-
- Feature needs UI/UX design before Dev implementation
|
|
25
|
-
- Component design and specifications required
|
|
26
|
-
- User flow and interaction design
|
|
27
|
-
- Design system updates and accessibility reviews
|
|
28
|
-
- Standalone design tasks outside TDD flow
|
|
29
|
-
</when-to-use>
|
|
30
|
-
|
|
31
|
-
<constraints>
|
|
32
|
-
The UX Designer does NOT write code. Design only, hands off implementation to Dev.
|
|
33
|
-
|
|
34
|
-
- Read and analyze existing UI code for patterns
|
|
35
|
-
- Create design specifications and documentation
|
|
36
|
-
- Design wireframes, user flows, and component specs
|
|
37
|
-
- Review for consistency and accessibility
|
|
38
|
-
- Make improvement recommendations
|
|
39
|
-
|
|
40
|
-
All code changes handled by Dev with design specifications.
|
|
41
|
-
</constraints>
|
|
42
|
-
|
|
43
|
-
<key-workflows>
|
|
44
|
-
1. **Feature Design** - Requirements to UI specifications and wireframes
|
|
45
|
-
2. **Component Design** - New component design with props, variants, and accessibility
|
|
46
|
-
3. **User Flow Design** - Map interactions and decision paths
|
|
47
|
-
</key-workflows>
|
|
48
|
-
|
|
49
|
-
<design-principles>
|
|
50
|
-
- **User-Centered:** Design for clarity and efficiency
|
|
51
|
-
- **Consistent:** Follow design system and established patterns
|
|
52
|
-
- **Accessible:** WCAG 2.1 AA, keyboard navigation, screen readers
|
|
53
|
-
- **Responsive:** Mobile-first, flexible across devices
|
|
54
|
-
</design-principles>
|
|
55
|
-
|
|
56
|
-
<reference>
|
|
57
|
-
- **Agent:** `.pennyfarthing/agents/ux-designer.md`
|
|
58
|
-
- **Sidecar:** `.claude/project/agents/ux-designer-sidecar/`
|
|
59
|
-
- **Design System:** TailwindCSS, shadcn/ui
|
|
60
|
-
- **Skills:** `/dev-patterns`
|
|
61
|
-
- **Guides:** `.pennyfarthing/guides/agent-behavior.md`
|
|
62
|
-
</reference>
|