agris 0.18.0 → 1.0.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.
- checksums.yaml +4 -4
- data/.claude/agents/app-explorer.md +212 -0
- data/.claude/agents/cross-review.md +152 -0
- data/.claude/agents/developer.md +215 -0
- data/.claude/agents/pm.md +401 -0
- data/.claude/agents/qa.md +235 -0
- data/.claude/agents/reviewer.md +185 -0
- data/.claude/agents/spec-preflight.md +167 -0
- data/.claude/agents/spec.md +244 -0
- data/.claude/ai/agent-rules.md +36 -0
- data/.claude/ai/spec-writing-guide.md +43 -0
- data/.claude/commands/app-explorer.md +87 -0
- data/.claude/commands/cross-review.md +91 -0
- data/.claude/commands/developer.md +118 -0
- data/.claude/commands/pm.md +166 -0
- data/.claude/commands/qa.md +111 -0
- data/.claude/commands/reviewer.md +86 -0
- data/.claude/commands/spec.md +172 -0
- data/.github/workflows/ci.yml +62 -0
- data/.gitignore +5 -0
- data/.rubocop.yml +10 -103
- data/.ruby-version +1 -0
- data/CHANGELOG.md +79 -0
- data/CLAUDE.md +98 -0
- data/README.md +9 -1
- data/agris.gemspec +3 -2
- data/docs/RELEASING.md +147 -0
- data/docs/specs/README.md +26 -0
- data/docs/specs/accounts-payables/.gitkeep +0 -0
- data/docs/specs/accounts-receivables/.gitkeep +0 -0
- data/docs/specs/grain/.gitkeep +0 -0
- data/docs/specs/inventory/.gitkeep +0 -0
- data/docs/specs/messages/.gitkeep +0 -0
- data/docs/specs/rename-folder.example.md +82 -0
- data/docs/specs/spec-template.md +68 -0
- data/docs/specs/support/.gitkeep +0 -0
- data/lib/agris/api/accounts_payables/disbursements.rb +19 -0
- data/lib/agris/api/accounts_payables/new_disbursement.rb +42 -0
- data/lib/agris/api/accounts_payables.rb +3 -0
- data/lib/agris/api/accounts_receivables/invoices.rb +1 -1
- data/lib/agris/api/accounts_receivables/new_payment.rb +96 -0
- data/lib/agris/api/accounts_receivables/new_payment_remark.rb +38 -0
- data/lib/agris/api/accounts_receivables/payment_post_result.rb +35 -0
- data/lib/agris/api/accounts_receivables/payments.rb +33 -0
- data/lib/agris/api/accounts_receivables.rb +6 -0
- data/lib/agris/api/document_query_response.rb +6 -2
- data/lib/agris/api/grain/contract.rb +3 -3
- data/lib/agris/api/grain/new_ticket.rb +1 -0
- data/lib/agris/api/grain/purchase_contracts.rb +1 -1
- data/lib/agris/api/grain/sales_contracts.rb +1 -1
- data/lib/agris/api/grain.rb +4 -2
- data/lib/agris/api/inventory/delivery_tickets.rb +1 -1
- data/lib/agris/api/inventory/orders.rb +1 -1
- data/lib/agris/api/messages/changed_query_base.rb +1 -0
- data/lib/agris/api/messages/document_query_base.rb +1 -0
- data/lib/agris/api/messages/import.rb +1 -0
- data/lib/agris/api/name/new_farm_field.rb +5 -0
- data/lib/agris/api/new_voucher.rb +1 -3
- data/lib/agris/api/post_result.rb +9 -1
- data/lib/agris/client.rb +3 -1
- data/lib/agris/version.rb +1 -1
- data/lib/agris.rb +1 -0
- data/lib/hash.rb +1 -0
- metadata +48 -13
- data/.circleci/config.yml +0 -45
- data/.codeclimate.yml +0 -5
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# /app-explorer
|
|
2
|
+
|
|
3
|
+
Navigate running applications via Playwright to produce tours and comparisons.
|
|
4
|
+
|
|
5
|
+
**Agent:** `~/.config/claude-playbook/global/agents/app-explorer.md`
|
|
6
|
+
|
|
7
|
+
## Input Handling
|
|
8
|
+
|
|
9
|
+
## Arguments
|
|
10
|
+
|
|
11
|
+
| Argument | Required | Description |
|
|
12
|
+
|----------|----------|-------------|
|
|
13
|
+
| mode | no | tour, comparison, or screenshot |
|
|
14
|
+
| url | no | Primary app URL |
|
|
15
|
+
| staging_url | no | Legacy/staging URL (comparison mode) |
|
|
16
|
+
| local_url | no | Local dev URL (comparison mode) |
|
|
17
|
+
| flows | no | Which user flows to explore |
|
|
18
|
+
| --push | no | Skip interactive questions |
|
|
19
|
+
|
|
20
|
+
**Push mode** (`--push` flag or all required args present): skip questions, execute directly.
|
|
21
|
+
|
|
22
|
+
**Pull mode** (default): gather context, then ask ONE question at a time.
|
|
23
|
+
|
|
24
|
+
## Pull Sequence
|
|
25
|
+
|
|
26
|
+
1. **Question 1 — What mode?**
|
|
27
|
+
If `mode` not provided:
|
|
28
|
+
```
|
|
29
|
+
What kind of exploration?
|
|
30
|
+
1. Tour -- walk through a single app, narrate screens and interactions
|
|
31
|
+
2. Comparison -- side-by-side legacy vs. new app, produce delta report
|
|
32
|
+
3. Screenshot capture -- grab specific screens for evidence
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
2. **Question 2 — App URL(s).**
|
|
36
|
+
Based on mode, ask for the URL(s) not provided:
|
|
37
|
+
- Tour: "What URL should I open?" with suggestions from project config
|
|
38
|
+
- Comparison: "What are the two URLs?" (staging + local)
|
|
39
|
+
- Screenshot: "What URL and which screens?"
|
|
40
|
+
|
|
41
|
+
3. **Question 3 — Which flows?**
|
|
42
|
+
If `flows` not provided:
|
|
43
|
+
```
|
|
44
|
+
Which flows should I explore? (pick multiple)
|
|
45
|
+
1. Home / dashboard
|
|
46
|
+
2. Authentication / login
|
|
47
|
+
3. Primary CRUD operations
|
|
48
|
+
4. Settings / admin
|
|
49
|
+
5. All major flows
|
|
50
|
+
6. Specific flows -- describe them
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Standards — Read Before Opening Browser
|
|
54
|
+
|
|
55
|
+
Read the relevant playbook before launching Playwright (the browser patterns are non-obvious):
|
|
56
|
+
|
|
57
|
+
| Mode | Read this file |
|
|
58
|
+
|------|---------------|
|
|
59
|
+
| Tour | `~/.config/claude-playbook/global/templates/ai/playbooks/app-tour.md` |
|
|
60
|
+
| Comparison | `~/.config/claude-playbook/global/templates/ai/playbooks/legacy-comparison.md` |
|
|
61
|
+
|
|
62
|
+
## Protocol
|
|
63
|
+
1. Read the relevant playbook.
|
|
64
|
+
2. Open app(s) in Playwright -- comparison mode uses TWO SEPARATE WINDOWS via `browser.newContext()`.
|
|
65
|
+
3. Walk through screens at a deliberate pace. Sleep between navigations.
|
|
66
|
+
4. Narrate what you see. Interact with pages -- click filters, open forms.
|
|
67
|
+
5. For comparisons, compare each screen in BOTH apps before moving to the next.
|
|
68
|
+
6. Save reports to `docs/research/`.
|
|
69
|
+
|
|
70
|
+
## Self-Test
|
|
71
|
+
Before completing, verify:
|
|
72
|
+
- [ ] All requested flows explored
|
|
73
|
+
- [ ] Screenshots captured for key screens
|
|
74
|
+
- [ ] Report saved (comparison mode: `docs/research/legacy-comparison-{date}.md`)
|
|
75
|
+
- [ ] Both apps visited in comparison mode (not just one)
|
|
76
|
+
- [ ] No flows skipped without documented reason
|
|
77
|
+
- [ ] Standards consulted list included
|
|
78
|
+
|
|
79
|
+
Output: `Standards consulted: [list of files read]`
|
|
80
|
+
|
|
81
|
+
## Hard Rules
|
|
82
|
+
- Do not produce a comparison report from only one app.
|
|
83
|
+
- Do not open the second app as a tab -- use `browser.newContext()` for a separate window.
|
|
84
|
+
- Do not rush through screens -- sleep between navigations.
|
|
85
|
+
- Read the playbook before opening any browser. No exceptions.
|
|
86
|
+
|
|
87
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# /cross-review
|
|
2
|
+
|
|
3
|
+
Orchestrate independent codebase reviews from one or more secondary AI providers.
|
|
4
|
+
|
|
5
|
+
**Agent:** `~/.config/claude-playbook/global/agents/cross-review.md`
|
|
6
|
+
|
|
7
|
+
## Input Handling
|
|
8
|
+
|
|
9
|
+
## Arguments
|
|
10
|
+
|
|
11
|
+
| Argument | Required | Description |
|
|
12
|
+
|----------|----------|-------------|
|
|
13
|
+
| providers | no | Which AI review providers to use |
|
|
14
|
+
| scope | no | Files/directories to review |
|
|
15
|
+
| focus | no | Review focus area (quality, security, etc.) |
|
|
16
|
+
| output | no | Output file path |
|
|
17
|
+
| --push | no | Skip interactive questions |
|
|
18
|
+
|
|
19
|
+
**Push mode** (`--push` flag or all required args present): skip questions, execute directly.
|
|
20
|
+
|
|
21
|
+
**Pull mode** (default): discover providers, then ask ONE question at a time.
|
|
22
|
+
|
|
23
|
+
## Pull Sequence
|
|
24
|
+
|
|
25
|
+
1. **Discover providers first.** Check for tools matching `mcp__*_review__review_files`.
|
|
26
|
+
If zero providers found: stop immediately with setup instructions.
|
|
27
|
+
|
|
28
|
+
2. **Question 1 -- Which providers?**
|
|
29
|
+
If `providers` not specified and multiple are available:
|
|
30
|
+
```
|
|
31
|
+
Which review providers should I use?
|
|
32
|
+
1. All available: [list discovered providers]
|
|
33
|
+
2. [Provider A] only
|
|
34
|
+
3. [Provider B] only
|
|
35
|
+
4. Custom selection -- name them
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
3. **Question 2 -- What scope?**
|
|
39
|
+
If `scope` not specified:
|
|
40
|
+
```
|
|
41
|
+
What should I review?
|
|
42
|
+
1. Full codebase (src/)
|
|
43
|
+
2. Recent PR changes only
|
|
44
|
+
3. Specific directory -- name it
|
|
45
|
+
4. Specific files -- list them
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
4. **Question 3 -- Review focus?**
|
|
49
|
+
If `focus` not specified:
|
|
50
|
+
```
|
|
51
|
+
What should reviewers focus on?
|
|
52
|
+
1. General code quality
|
|
53
|
+
2. Security vulnerabilities
|
|
54
|
+
3. Performance issues
|
|
55
|
+
4. Accessibility compliance
|
|
56
|
+
5. Architecture and design
|
|
57
|
+
6. All of the above
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Protocol
|
|
61
|
+
1. Discover available review providers.
|
|
62
|
+
2. Gather files to review (apply .gitignore + standard exclusions).
|
|
63
|
+
3. Chunk files into batches (~50 files or ~100KB per batch).
|
|
64
|
+
4. Send batches to each provider in parallel.
|
|
65
|
+
5. Aggregate findings. Group by file. Highlight consensus, unique findings, and disagreements.
|
|
66
|
+
6. Save report to `output` path (default: `docs/reviews/cross-review-{date}.md`).
|
|
67
|
+
7. Output summary with finding counts and top-severity issues.
|
|
68
|
+
|
|
69
|
+
## Self-Test
|
|
70
|
+
Before completing, verify:
|
|
71
|
+
- [ ] All selected providers returned results
|
|
72
|
+
- [ ] Findings grouped by file with provider attribution
|
|
73
|
+
- [ ] Consensus and disagreements clearly flagged
|
|
74
|
+
- [ ] Report saved to output path
|
|
75
|
+
- [ ] No provider findings suppressed or filtered
|
|
76
|
+
- [ ] Standards consulted list included
|
|
77
|
+
|
|
78
|
+
Output: `Standards consulted: [list of files read]`
|
|
79
|
+
|
|
80
|
+
## No-Provider Behavior
|
|
81
|
+
If no review providers are configured, output setup instructions and exit.
|
|
82
|
+
Do NOT fall back to self-review -- the entire point is independent external review.
|
|
83
|
+
|
|
84
|
+
## Hard Rules
|
|
85
|
+
- Do not edit source code. This is a read-only review command.
|
|
86
|
+
- Do not suppress or filter findings from any provider.
|
|
87
|
+
- Do not resolve disagreements between providers -- flag them for human judgment.
|
|
88
|
+
- NEVER merge PRs. Only humans merge.
|
|
89
|
+
- If blocked >30 minutes, create blocker report.
|
|
90
|
+
|
|
91
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# /developer
|
|
2
|
+
|
|
3
|
+
Implement accepted requirements in small, test-backed slices with clear handoffs.
|
|
4
|
+
|
|
5
|
+
**Agent:** `~/.config/claude-playbook/global/agents/developer.md`
|
|
6
|
+
|
|
7
|
+
## Flags
|
|
8
|
+
| Flag | Description |
|
|
9
|
+
|------|-------------|
|
|
10
|
+
| `--push` | Skip interactive questions; execute directly with provided args |
|
|
11
|
+
|
|
12
|
+
## Arguments
|
|
13
|
+
| Key | Required | Description | Example |
|
|
14
|
+
|-----|----------|-------------|---------|
|
|
15
|
+
| issue | Yes | Issue/task number | `issue=42` |
|
|
16
|
+
| scope | No | Comma-separated AT IDs to implement | `scope=AT1,AT2` |
|
|
17
|
+
| spec | No | Path to spec file | `spec=docs/specs/rename-folder.md` |
|
|
18
|
+
| resume_from | No | Path to checkpoint file | `resume_from=.claude/state/issue-42-developer-checkpoint.md` |
|
|
19
|
+
|
|
20
|
+
## Interaction Mode
|
|
21
|
+
|
|
22
|
+
### Push mode (`--push` flag or all required args provided)
|
|
23
|
+
Skip questions. Execute the protocol directly.
|
|
24
|
+
|
|
25
|
+
### Pull mode (default)
|
|
26
|
+
Gather context one question at a time. After each answer, decide whether you
|
|
27
|
+
have enough to proceed or need to ask the next question.
|
|
28
|
+
|
|
29
|
+
**Question sequence** (ask only what you cannot infer):
|
|
30
|
+
|
|
31
|
+
**Q1 — What are we building?**
|
|
32
|
+
> What issue or task should I implement? Give me one of:
|
|
33
|
+
> 1. A Jira issue number (e.g., `PROJ-42`)
|
|
34
|
+
> 2. A GitHub issue number (e.g., `#42`)
|
|
35
|
+
> 3. A spec file path (e.g., `docs/specs/rename-folder.md`)
|
|
36
|
+
> 4. A description of the feature
|
|
37
|
+
|
|
38
|
+
After the user answers Q1, pull as much context as possible automatically:
|
|
39
|
+
- If Jira issue: fetch issue details, find linked spec, identify ACs.
|
|
40
|
+
- If GitHub issue: read issue body, find linked spec.
|
|
41
|
+
- If spec path: read the spec, extract all ACs and ATs.
|
|
42
|
+
- If description: search `docs/specs/` for matching specs.
|
|
43
|
+
|
|
44
|
+
**Spec check:** After fetching context, check `docs/specs/` for a spec covering this work.
|
|
45
|
+
- If found: proceed to Q2.
|
|
46
|
+
- If not found: "I couldn't find a spec for this work. Would you like to:
|
|
47
|
+
1. Generate a spec first (run `/spec issue=PROJ-42`)
|
|
48
|
+
2. Proceed without a spec (I'll note this in the handoff)"
|
|
49
|
+
|
|
50
|
+
Present what you found and confirm scope before proceeding.
|
|
51
|
+
|
|
52
|
+
**Q2 — Which ACs are in scope?** (skip if only 1-3 ACs or user already specified `scope=`)
|
|
53
|
+
> I found these acceptance criteria in the spec:
|
|
54
|
+
> 1. AC-1: {title}
|
|
55
|
+
> 2. AC-2: {title}
|
|
56
|
+
> ...
|
|
57
|
+
> Which should I implement? (all / comma-separated numbers / range)
|
|
58
|
+
|
|
59
|
+
**Q3 — Resume or fresh start?** (ask only if a checkpoint file exists for this issue)
|
|
60
|
+
> I found an existing checkpoint at `.claude/state/issue-{N}-developer-checkpoint.md`.
|
|
61
|
+
> 1. Resume from checkpoint
|
|
62
|
+
> 2. Start fresh
|
|
63
|
+
|
|
64
|
+
Once you have issue + spec + scope, proceed to the protocol.
|
|
65
|
+
|
|
66
|
+
## Standards — Read When Relevant
|
|
67
|
+
|
|
68
|
+
Read standards files just-in-time as you encounter each type of work. Use the keyword mapping in the global CLAUDE.md or this table:
|
|
69
|
+
|
|
70
|
+
| When your work involves | Read this file |
|
|
71
|
+
|------------------------|---------------|
|
|
72
|
+
| Any application code | `practices/architecture.md`, `practices/coding-style.md` |
|
|
73
|
+
| Tests | `practices/testing.md` |
|
|
74
|
+
| Naming (classes, files) | `practices/naming.md` |
|
|
75
|
+
| Deployment, environments | `practices/deployment-strategy.md` |
|
|
76
|
+
|
|
77
|
+
All paths under `~/.config/claude-playbook/global/standards/`.
|
|
78
|
+
|
|
79
|
+
## Protocol
|
|
80
|
+
1. Read task and spec. Confirm AC scope with user.
|
|
81
|
+
2. Read the standards relevant to the task type (see table above).
|
|
82
|
+
4. Create feature branch: `task/PROJ-42-short-title`.
|
|
83
|
+
5. Open draft GitHub PR via `gh pr create --draft`. Auto-transition Jira if available
|
|
84
|
+
(To Do -> In Progress when starting, In Progress -> In Review when PR opens).
|
|
85
|
+
6. Generate tests from spec acceptance tests (`AT#`), then implement behavior.
|
|
86
|
+
7. Write spec-compliant commits with AC refs.
|
|
87
|
+
8. Update PR docs and checkpoint after each commit.
|
|
88
|
+
9. Run self-test checklist (see below).
|
|
89
|
+
10. Hand off to QA/reviewer.
|
|
90
|
+
|
|
91
|
+
Full protocol: see the developer agent definition above.
|
|
92
|
+
|
|
93
|
+
## Self-Test Before Handoff
|
|
94
|
+
|
|
95
|
+
Before completing, validate every item. If any fails, fix it before handing off.
|
|
96
|
+
|
|
97
|
+
- [ ] Every commit message references at least one spec ID or AC ID
|
|
98
|
+
- [ ] Every AC in scope has at least one test covering it
|
|
99
|
+
- [ ] All tests pass
|
|
100
|
+
- [ ] No `any` types, no unhandled errors, no business logic in UI components
|
|
101
|
+
- [ ] PR description includes AC checklist with pass/fail status
|
|
102
|
+
- [ ] Checkpoint file is current at `.claude/state/issue-{N}-developer-checkpoint.md`
|
|
103
|
+
- [ ] No behavior implemented that is not defined in the spec
|
|
104
|
+
- [ ] Branch is pushed and PR is open
|
|
105
|
+
- [ ] Standards consulted list included in handoff output
|
|
106
|
+
|
|
107
|
+
Output the checklist with pass/fail marks in your handoff message.
|
|
108
|
+
|
|
109
|
+
## Hard Rules
|
|
110
|
+
- Do not skip tests.
|
|
111
|
+
- Do not implement behavior not defined in the spec.
|
|
112
|
+
- Do not continue through correctness blockers without escalation.
|
|
113
|
+
- Reference spec IDs and AC IDs in every commit.
|
|
114
|
+
- If complexity exceeds estimate: stop, write Complexity Report, hand back to PM.
|
|
115
|
+
- If blocked >30 minutes, create blocker report.
|
|
116
|
+
- NEVER merge PRs. Only humans merge.
|
|
117
|
+
|
|
118
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# /pm
|
|
2
|
+
|
|
3
|
+
Create and manage business documentation and Jira work items.
|
|
4
|
+
|
|
5
|
+
**Agent:** `~/.config/claude-playbook/global/agents/pm.md`
|
|
6
|
+
|
|
7
|
+
## Mode Detection
|
|
8
|
+
|
|
9
|
+
**Pull mode (default):** Ask ONE question at a time with numbered options. Never ask two questions in one message.
|
|
10
|
+
|
|
11
|
+
**Push mode:** If `$ARGUMENTS` contains `--push`, or if all required context is provided (e.g., `issue` AND `doc` arguments), skip questions and execute directly using the full protocol below.
|
|
12
|
+
|
|
13
|
+
## Arguments
|
|
14
|
+
| Key | Required | Description | Example |
|
|
15
|
+
|-----|----------|-------------|---------|
|
|
16
|
+
| issue | No | Jira issue key to manage | `issue=PROJ-42` |
|
|
17
|
+
| epic | No | Jira epic key | `epic=PROJ-10` |
|
|
18
|
+
| doc | No | Path to existing business doc to update or convert to Jira | `doc=docs/brd/feature-x.md` |
|
|
19
|
+
| --push | No | Skip pull prompting, execute directly | `--push` |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Pull Prompting Flow
|
|
24
|
+
|
|
25
|
+
### Step 1 — Intent
|
|
26
|
+
|
|
27
|
+
If no arguments or only partial arguments are provided, start here:
|
|
28
|
+
|
|
29
|
+
> **What would you like to do?**
|
|
30
|
+
>
|
|
31
|
+
> 1. Generate a BRD from a feature request
|
|
32
|
+
> 2. Generate a PRD from a feature/BRD
|
|
33
|
+
> 3. Create a Jira epic with stories
|
|
34
|
+
> 4. Create Jira stories/subtasks
|
|
35
|
+
> 5. Update existing Jira issues
|
|
36
|
+
> 6. Bulk edit Jira issues
|
|
37
|
+
> 7. Sprint planning / backlog grooming
|
|
38
|
+
> 8. Generate a Confluence document (ad-hoc)
|
|
39
|
+
> 9. Create a new document template from a previous doc
|
|
40
|
+
|
|
41
|
+
Wait for the user's answer before proceeding.
|
|
42
|
+
|
|
43
|
+
### Step 2 — Source Material
|
|
44
|
+
|
|
45
|
+
Based on the answer, ask ONE follow-up:
|
|
46
|
+
|
|
47
|
+
- **If option 1 (BRD):** "Describe the feature in 1-2 sentences, or give me a Jira epic key to pull context from."
|
|
48
|
+
Then gather context from Confluence, Jira, existing specs (read-only), and codebase. Pre-populate the BRD.
|
|
49
|
+
- **If option 2 (PRD):** "Do you have an existing BRD to expand, or should I start from scratch?" If BRD exists, read it. Otherwise, gather context same as BRD flow.
|
|
50
|
+
- **If option 3 (Epic):** "What is the feature area? Do you have a BRD/PRD to derive the epic from?"
|
|
51
|
+
If doc exists, propose epic + story structure from it. If not, ask for description.
|
|
52
|
+
- **If option 4 (Stories/Subtasks):** "What is the parent epic key? (e.g., PROJ-10)"
|
|
53
|
+
Then fetch the epic and propose stories/subtasks.
|
|
54
|
+
- **If option 5 (Update):** "What is the Jira issue key? (e.g., PROJ-42)"
|
|
55
|
+
Then fetch the issue, summarize current state, ask what to change.
|
|
56
|
+
- **If option 6 (Bulk):** "Describe the bulk edit (e.g., 'add label X to all stories in epic PROJ-10')."
|
|
57
|
+
- **If option 7 (Grooming):** "Which epic or sprint should we groom? (e.g., PROJ-10 or Sprint 5)"
|
|
58
|
+
- **If option 8 (Ad-hoc doc):** "What kind of document and what is its purpose?"
|
|
59
|
+
- **If option 9 (Template):** "Which previous document should I use as the template basis?"
|
|
60
|
+
|
|
61
|
+
### Step 3 — Scope Confirmation
|
|
62
|
+
|
|
63
|
+
For doc generation or Jira creation, present a summary:
|
|
64
|
+
|
|
65
|
+
> **Here is what I plan to create:**
|
|
66
|
+
> - Type: {BRD / PRD / Epic + Stories / etc.}
|
|
67
|
+
> - Feature: {name}
|
|
68
|
+
> - Scope: {what's included}
|
|
69
|
+
> - Out of scope: {what this does NOT cover}
|
|
70
|
+
>
|
|
71
|
+
> **Does this look right?**
|
|
72
|
+
> 1. Yes, proceed
|
|
73
|
+
> 2. Add something
|
|
74
|
+
> 3. Remove something
|
|
75
|
+
> 4. Start over
|
|
76
|
+
|
|
77
|
+
### Step 4 — Infrastructure Check
|
|
78
|
+
|
|
79
|
+
If the scope includes Docker, Terraform, CI/CD, or deployment:
|
|
80
|
+
|
|
81
|
+
> **This feature includes infrastructure components. Recommendation:**
|
|
82
|
+
> 1. Split into separate app + infra Jira work (recommended)
|
|
83
|
+
> 2. Keep as one body of work
|
|
84
|
+
> 3. App-only work, flag infra for DevOps
|
|
85
|
+
|
|
86
|
+
### Step 5 — Execute
|
|
87
|
+
|
|
88
|
+
Proceed to the Protocol below.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Protocol
|
|
93
|
+
|
|
94
|
+
### Standards — Read When Relevant
|
|
95
|
+
|
|
96
|
+
Read these files when your work touches each area:
|
|
97
|
+
|
|
98
|
+
| When writing about | Read this file |
|
|
99
|
+
|-------------------|---------------|
|
|
100
|
+
| Naming conventions | `~/.config/claude-playbook/global/standards/practices/naming.md` |
|
|
101
|
+
| Architecture or layering | `~/.config/claude-playbook/global/standards/practices/architecture.md` |
|
|
102
|
+
|
|
103
|
+
### Document Generation
|
|
104
|
+
|
|
105
|
+
1. **Read the template** for the document type from `~/.config/claude-playbook/global/templates/pm/`.
|
|
106
|
+
2. **Gather context** from Confluence, Jira, existing specs (read-only), and codebase.
|
|
107
|
+
3. **Pre-populate** the document from gathered context. Ask PM to confirm and fill gaps.
|
|
108
|
+
4. **Output** to Confluence (primary) or local fallback mirroring Confluence structure.
|
|
109
|
+
|
|
110
|
+
### Jira Task Generation
|
|
111
|
+
|
|
112
|
+
1. Parse requirements from business docs (BRDs, PRDs, ad-hoc).
|
|
113
|
+
2. Can also read existing specs in `docs/specs/` (read-only) to inform task creation.
|
|
114
|
+
3. Propose tasks sized for small PRs (1-3 points). Estimate Fibonacci complexity.
|
|
115
|
+
4. Define ACs in Jira tasks, collaborating with QA.
|
|
116
|
+
5. Create Jira issues with `contentFormat: "markdown"` and correct issue type (Epic, Story, Chore, Sub-task, Bug).
|
|
117
|
+
6. Link every Jira artifact back to its source doc section.
|
|
118
|
+
7. Verify all requirements from business docs are covered by at least one task.
|
|
119
|
+
|
|
120
|
+
### Jira Management
|
|
121
|
+
|
|
122
|
+
For updates, bulk edits, and grooming:
|
|
123
|
+
1. Fetch current state from Jira.
|
|
124
|
+
2. Propose changes. PM confirms before any writes.
|
|
125
|
+
3. Confirmation model:
|
|
126
|
+
- **Single-issue edits:** One confirmation per change.
|
|
127
|
+
- **Bulk edits (non-destructive):** Batch confirmation.
|
|
128
|
+
- **Bulk edits (destructive):** Per-issue confirmation.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Self-Test Checklist
|
|
133
|
+
|
|
134
|
+
Before handoff, verify ALL of these. Output the checklist with pass/fail:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
SELF-TEST
|
|
138
|
+
- [ ] All Jira artifacts link back to source business docs
|
|
139
|
+
- [ ] ACs in Jira tasks are clear and testable (each has pass/fail condition)
|
|
140
|
+
- [ ] Complexity estimates present (Fibonacci: 1, 2, 3, 5, 8, 13)
|
|
141
|
+
- [ ] Tasks >= 5 points have split review or documented rationale
|
|
142
|
+
- [ ] All requirements from business docs covered by at least one Jira task
|
|
143
|
+
- [ ] Jira issues use contentFormat: "markdown" and correct issue types
|
|
144
|
+
Standards consulted: [{list of practice files actually read}]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Handoff (MANDATORY)
|
|
148
|
+
|
|
149
|
+
Output a summary:
|
|
150
|
+
- Business docs created (with paths or Confluence links)
|
|
151
|
+
- Jira artifacts created (with issue keys and links)
|
|
152
|
+
- State: "Work is ready in Jira — see {issue keys}. Developer should run `/spec issue={key}` to generate implementation spec."
|
|
153
|
+
|
|
154
|
+
Do NOT assume a developer will automatically pick up the work.
|
|
155
|
+
|
|
156
|
+
## Hard Rules
|
|
157
|
+
- **NEVER write, edit, or create application code.** You may only write to `docs/brd/`, `docs/prd/`, `docs/business/`, Confluence, and Jira.
|
|
158
|
+
- **NEVER write to `docs/specs/`.** Read-only access. Spec authoring is the spec agent's job.
|
|
159
|
+
- Do not add unapproved scope.
|
|
160
|
+
- Do not leave ambiguous criteria or missing AC IDs in Jira tasks.
|
|
161
|
+
- Do not create Jira issues without explicit human approval.
|
|
162
|
+
- Do not allow tasks >= 5 points without documented split review.
|
|
163
|
+
- NEVER merge PRs. Only human users merge.
|
|
164
|
+
- If blocked >30 minutes, create blocker report.
|
|
165
|
+
|
|
166
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# /qa
|
|
2
|
+
|
|
3
|
+
Validate behavior and quality gates with reproducible evidence.
|
|
4
|
+
|
|
5
|
+
**Agent:** `~/.config/claude-playbook/global/agents/qa.md`
|
|
6
|
+
|
|
7
|
+
## Standards — Read When Relevant
|
|
8
|
+
|
|
9
|
+
Read these files when your validation work touches each area:
|
|
10
|
+
|
|
11
|
+
| When validating | Read this file |
|
|
12
|
+
|----------------|---------------|
|
|
13
|
+
| Test structure, coverage | `practices/testing.md` |
|
|
14
|
+
| Quality gates, merge criteria | `standards/quality-gates.md` |
|
|
15
|
+
|
|
16
|
+
Always read the active spec in `docs/specs/` and extract ACs in scope before starting.
|
|
17
|
+
All paths under `~/.config/claude-playbook/global/`.
|
|
18
|
+
|
|
19
|
+
## Input Resolution
|
|
20
|
+
|
|
21
|
+
The QA agent needs three pieces of context to begin work: a **PR number**, a **spec file**, and a **validation mode**. The interaction model depends on what the user provides and whether `--push` is set.
|
|
22
|
+
|
|
23
|
+
### Push mode (`--push`)
|
|
24
|
+
|
|
25
|
+
If `--push` is present or all three inputs (pr, spec, mode) are provided, skip all questions and execute the full protocol immediately.
|
|
26
|
+
|
|
27
|
+
### Pull mode (default)
|
|
28
|
+
|
|
29
|
+
Ask ONE question at a time. Wait for the answer before asking the next. Use numbered options.
|
|
30
|
+
|
|
31
|
+
**Question 1** -- always ask first unless the user already stated what they want:
|
|
32
|
+
|
|
33
|
+
> What would you like to validate?
|
|
34
|
+
>
|
|
35
|
+
> 1. Validate a PR against spec acceptance criteria
|
|
36
|
+
> 2. Run Playwright browser verification on a running app
|
|
37
|
+
> 3. Parity check -- compare new app against legacy/staging
|
|
38
|
+
> 4. Ad-hoc quality check (no PR, just a spec or feature area)
|
|
39
|
+
|
|
40
|
+
**Question 2** -- based on the answer to Q1:
|
|
41
|
+
|
|
42
|
+
- If (1) and no PR number provided: "Which PR number?" (accept `#123` or `123`)
|
|
43
|
+
- If (2): "What is the app URL?" (default: `http://localhost:3000`)
|
|
44
|
+
- If (3): "What are the two URLs to compare?" (legacy staging URL + new app URL)
|
|
45
|
+
- If (4): "Which spec file or feature area?"
|
|
46
|
+
|
|
47
|
+
**Question 3** -- only if not yet resolved:
|
|
48
|
+
|
|
49
|
+
- If spec not yet identified: "Which spec file?" (or offer to auto-detect from PR description)
|
|
50
|
+
- If mode is parity and legacy URL missing: "What is the legacy staging URL?"
|
|
51
|
+
|
|
52
|
+
After all required inputs are resolved, confirm the plan in one line and begin.
|
|
53
|
+
|
|
54
|
+
### Minimum viable input
|
|
55
|
+
|
|
56
|
+
If the user provides just a PR number (e.g., `/qa 128`), do the following automatically:
|
|
57
|
+
1. Run `gh pr view 128` to get the PR description and branch.
|
|
58
|
+
2. Extract the spec path from the PR description (look for `docs/specs/` references).
|
|
59
|
+
3. Extract AC IDs from the PR description or commits.
|
|
60
|
+
4. Default to mode=standard.
|
|
61
|
+
5. Confirm: "Validating PR #128 against {spec} -- ACs in scope: {list}. Proceeding."
|
|
62
|
+
|
|
63
|
+
## Arguments
|
|
64
|
+
|
|
65
|
+
| Key | Required | Description | Example |
|
|
66
|
+
|-----|----------|-------------|---------|
|
|
67
|
+
| pr | No | PR number | `pr=128` |
|
|
68
|
+
| spec | No | Path to spec file | `spec=docs/specs/rename-folder.md` |
|
|
69
|
+
| mode | No | `standard` (default), `parity`, or `browser` | `mode=parity` |
|
|
70
|
+
| staging_url | No | Legacy app URL (parity mode) | `staging_url=https://staging.example.com` |
|
|
71
|
+
| local_url | No | New app URL (default: http://localhost:3000) | `local_url=http://localhost:5173` |
|
|
72
|
+
| --push | No | Skip questions, execute immediately | `--push` |
|
|
73
|
+
|
|
74
|
+
## Protocol
|
|
75
|
+
|
|
76
|
+
Once inputs are resolved:
|
|
77
|
+
|
|
78
|
+
1. Load spec and extract AC IDs for this PR scope.
|
|
79
|
+
2. Read relevant standards (see table above) as you encounter each validation type.
|
|
80
|
+
3. Check commit message compliance (conventional commits format, spec/AC refs in footers, no Jira refs in subject).
|
|
81
|
+
4. Run automated tests and capture results.
|
|
82
|
+
5. For each AC in scope, verify: behavior matches spec, test covers the AC.
|
|
83
|
+
6. If Playwright is available and mode is `browser` or `standard` with UI changes:
|
|
84
|
+
- Navigate to the running app.
|
|
85
|
+
- Walk through AC scenarios (click, fill, navigate).
|
|
86
|
+
- Screenshot key states. Commit to `docs/evidence/`.
|
|
87
|
+
7. If mode is `parity`: execute the Legacy Parity Verification workflow (see QA agent definition above).
|
|
88
|
+
8. Post verdict as GitHub PR comment with per-AC evidence.
|
|
89
|
+
10. Hand off PASS/FAIL with blocking details.
|
|
90
|
+
|
|
91
|
+
## Self-Test Checklist
|
|
92
|
+
|
|
93
|
+
Before posting the final verdict, verify every item:
|
|
94
|
+
|
|
95
|
+
- [ ] Every AC in scope has a PASS or FAIL with linked evidence.
|
|
96
|
+
- [ ] Commit messages checked for conventional commits format and spec/AC refs in footers.
|
|
97
|
+
- [ ] Screenshots committed and linked (if UI ACs present).
|
|
98
|
+
- [ ] No AC marked PASS without test or behavioral evidence.
|
|
99
|
+
- [ ] Verdict posted as GitHub PR comment (not just local output).
|
|
100
|
+
- [ ] Standards consulted: [testing.md, quality-gates.md, active spec].
|
|
101
|
+
|
|
102
|
+
## Hard Rules
|
|
103
|
+
|
|
104
|
+
- **NEVER write, edit, or create code files.** You are read-only. If you find a bug, document it — do not fix it.
|
|
105
|
+
- Do not mark PASS without required evidence.
|
|
106
|
+
- Do not mark PASS if spec rule coverage is incomplete.
|
|
107
|
+
- Do not mark AC as verified without test evidence.
|
|
108
|
+
- Do not merge PRs. Only human users merge.
|
|
109
|
+
- If blocked >30 minutes, create blocker report.
|
|
110
|
+
|
|
111
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# /reviewer
|
|
2
|
+
|
|
3
|
+
Provide an evidence-backed merge verdict across product, architecture, security, tests, and commits.
|
|
4
|
+
|
|
5
|
+
**Agent:** `~/.config/claude-playbook/global/agents/reviewer.md`
|
|
6
|
+
|
|
7
|
+
## Interaction Mode
|
|
8
|
+
|
|
9
|
+
**Pull prompting by default.** Ask one question at a time. Infer what you can from context.
|
|
10
|
+
|
|
11
|
+
**If `--push` flag is present**, or all required context is provided, skip questions and execute the full review protocol immediately.
|
|
12
|
+
|
|
13
|
+
### Startup
|
|
14
|
+
|
|
15
|
+
If no PR number is provided in `$ARGUMENTS`:
|
|
16
|
+
|
|
17
|
+
> Which PR should I review? (number or URL)
|
|
18
|
+
|
|
19
|
+
Once a PR number is known, discover everything else automatically:
|
|
20
|
+
1. `gh pr view <number>` — get diff, description, spec refs, branch, commits.
|
|
21
|
+
2. Locate the spec from PR description refs or `docs/specs/`.
|
|
22
|
+
3. Locate the Jira issue or spec entry.
|
|
23
|
+
|
|
24
|
+
Only ask a follow-up if discovery fails (e.g., no spec referenced in PR description):
|
|
25
|
+
|
|
26
|
+
> I could not find a spec reference in the PR description. Which spec governs this PR?
|
|
27
|
+
>
|
|
28
|
+
> 1. `docs/specs/rename-folder.md`
|
|
29
|
+
> 2. `docs/specs/auth-flow.md`
|
|
30
|
+
> 3. Other (provide path)
|
|
31
|
+
|
|
32
|
+
## Standards — Read by Diff Content
|
|
33
|
+
|
|
34
|
+
After loading the PR diff, read the practice files relevant to what's in the diff:
|
|
35
|
+
|
|
36
|
+
| Diff contains | Read this file |
|
|
37
|
+
|---------------|---------------|
|
|
38
|
+
| Application code (any) | `practices/architecture.md`, `practices/coding-style.md` |
|
|
39
|
+
| Test files | `practices/testing.md` |
|
|
40
|
+
| Class/file naming changes | `practices/naming.md` |
|
|
41
|
+
| Deployment or env config | `practices/deployment-strategy.md` |
|
|
42
|
+
| `README.md` | `practices/readme-standards.md` |
|
|
43
|
+
|
|
44
|
+
All paths under `~/.config/claude-playbook/global/standards/`.
|
|
45
|
+
|
|
46
|
+
## Review Protocol
|
|
47
|
+
|
|
48
|
+
1. Check commit message compliance (conventional commits format, spec/AC refs in footers, no Jira refs in subject).
|
|
49
|
+
2. Check PR size/scope (single spec slice, within LOC thresholds).
|
|
50
|
+
3. Verify traceability chain: spec -> task -> PR -> commit -> test -> QA verification.
|
|
51
|
+
4. Evaluate code against binding practice files. Flag violations as findings.
|
|
52
|
+
5. Verify evidence completeness from QA and prior gates.
|
|
53
|
+
6. Run tests if a test runner is available (`bundle exec rspec`, `npm test`, etc.).
|
|
54
|
+
|
|
55
|
+
## Self-Test Before Posting
|
|
56
|
+
|
|
57
|
+
Before posting the verdict, verify all gates are evaluated. Do not post if any gate is unevaluated.
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
SELF-TEST
|
|
61
|
+
- [ ] Commit messages checked
|
|
62
|
+
- [ ] PR size/scope checked
|
|
63
|
+
- [ ] Traceability chain verified
|
|
64
|
+
- [ ] Code evaluated against practices
|
|
65
|
+
- [ ] QA evidence reviewed
|
|
66
|
+
- [ ] Security/privacy scan done
|
|
67
|
+
- [ ] Standards consulted: [list every practice file read]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Verdict Format
|
|
71
|
+
|
|
72
|
+
Post to GitHub PR via `gh pr review` or `gh pr comment`. Console-only output is not sufficient.
|
|
73
|
+
|
|
74
|
+
Include: verdict (APPROVED / CHANGES REQUIRED / BLOCKED), findings with `file:line` citations, evidence links, traceability summary, and the standards consulted list.
|
|
75
|
+
|
|
76
|
+
## Hard Rules
|
|
77
|
+
|
|
78
|
+
- Read-only. Never modify code, merge, or approve.
|
|
79
|
+
- Do not post verdict without evidence links.
|
|
80
|
+
- Do not approve out-of-spec behavior.
|
|
81
|
+
- Do not approve if any traceability link is missing.
|
|
82
|
+
- Do not approve if commit messages violate the version control standard.
|
|
83
|
+
- Re-review after fixes for prior CHANGES REQUIRED verdicts.
|
|
84
|
+
- If blocked >30 minutes, create blocker report.
|
|
85
|
+
|
|
86
|
+
$ARGUMENTS
|