tillerhand 3.47.1 → 3.48.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/.claude/agents/board-chair.md +9 -9
- package/.claude/agents/code-reviewer.md +2 -2
- package/.claude/agents/council-advisor.md +2 -2
- package/.claude/agents/security-auditor.md +6 -6
- package/.claude/agents/test-writer.md +1 -1
- package/.claude/board/board-ai.md +6 -6
- package/.claude/board/board-api.md +6 -6
- package/.claude/board/board-architect.md +7 -7
- package/.claude/board/board-devops.md +6 -6
- package/.claude/board/board-mobile.md +6 -6
- package/.claude/board/board-performance.md +6 -6
- package/.claude/board/board-privacy.md +6 -6
- package/.claude/board/board-product.md +7 -7
- package/.claude/board/board-qa.md +7 -7
- package/.claude/board/board-ux.md +6 -6
- package/.claude/board/council.md +32 -32
- package/.claude/board/rules.md +8 -8
- package/.claude/commands/adopt.md +10 -10
- package/.claude/commands/ask-mode.md +6 -5
- package/.claude/commands/board.md +1 -1
- package/.claude/commands/build.md +8 -8
- package/.claude/commands/design.md +8 -8
- package/.claude/commands/findings-all.md +2 -2
- package/.claude/commands/findings-security.md +1 -1
- package/.claude/commands/fix-bug.md +2 -2
- package/.claude/commands/handoff.md +12 -12
- package/.claude/commands/language.md +1 -1
- package/.claude/commands/maintain.md +2 -2
- package/.claude/commands/plan-task.md +3 -3
- package/.claude/commands/qa.md +5 -5
- package/.claude/commands/release.md +3 -3
- package/.claude/commands/research.md +2 -2
- package/.claude/commands/retro.md +2 -2
- package/.claude/commands/review-changes.md +2 -2
- package/.claude/commands/rollback.md +1 -1
- package/.claude/commands/start.md +20 -20
- package/.claude/commands/tools.md +8 -6
- package/.claude/commands/user-feedback.md +3 -3
- package/.claude/commands/wrap-up.md +3 -3
- package/.claude/findings/protocol.md +2 -2
- package/.claude/findings/report-template.md +1 -1
- package/.claude/hooks/commit-gate.mjs +11 -9
- package/.claude/hooks/council.mjs +51 -24
- package/.claude/hooks/dashboard-data.mjs +73 -53
- package/.claude/hooks/dashboard.mjs +80 -71
- package/.claude/hooks/destructive-guard.mjs +1 -1
- package/.claude/hooks/freeze-guard.mjs +1 -1
- package/.claude/hooks/gate.mjs +14 -11
- package/.claude/hooks/labels.mjs +177 -0
- package/.claude/hooks/messages.mjs +8 -7
- package/.claude/hooks/notify.mjs +2 -1
- package/.claude/hooks/prefs.mjs +24 -10
- package/.claude/hooks/preview.mjs +6 -6
- package/.claude/hooks/progress.mjs +27 -15
- package/.claude/hooks/qa-report.mjs +12 -10
- package/.claude/hooks/session-start.mjs +9 -7
- package/.claude/hooks/status-read.mjs +22 -18
- package/.claude/hooks/statusline.mjs +10 -8
- package/.claude/hooks/tools.mjs +13 -8
- package/.claude/output-styles/{anlatici.md → narrator.md} +2 -2
- package/.claude/skills/logo-design/SKILL.md +2 -2
- package/.claude/skills/source-research/SKILL.md +1 -1
- package/.claude/skills/ui-motion/SKILL.md +2 -2
- package/AGENTS.md +12 -12
- package/CLAUDE.md +1 -1
- package/README.md +2 -2
- package/README.tr.md +3 -3
- package/docs/decisions/adr-template.md +1 -1
- package/docs/decisions/log.md +2 -2
- package/docs/findings/README.md +1 -1
- package/docs/operations/accounts.md +7 -7
- package/docs/operations/deploy-setup.md +3 -3
- package/docs/operations/feature-flags.md +2 -2
- package/docs/operations/maintenance.md +1 -1
- package/docs/operations/release-checklist.md +2 -2
- package/docs/operations/spend-alarms.md +2 -2
- package/docs/product/feedback.md +4 -4
- package/docs/product/launch.md +1 -1
- package/docs/product/prd.md +10 -10
- package/docs/product/roadmap.md +8 -8
- package/docs/product/specs/_template.md +8 -8
- package/docs/product/unit-economics.md +10 -10
- package/docs/quality/metrics.md +2 -2
- package/docs/quality/test-plan.md +5 -5
- package/docs/security/checklist.md +2 -2
- package/docs/workflow/board.md +5 -5
- package/docs/workflow/cost-log.md +1 -1
- package/docs/workflow/decision-protocol.md +18 -16
- package/docs/workflow/learning.md +2 -2
- package/docs/workflow/mcp-catalog.md +1 -1
- package/docs/workflow/models.md +1 -1
- package/docs/workflow/progress.md +14 -14
- package/docs/workflow/skills.md +9 -9
- package/docs/workflow/usage-limits.md +5 -5
- package/kit/CHANGELOG.md +19 -0
- package/kit/VERSION +1 -1
- package/kit/guide.html +21 -21
- package/kit/guide.tr.html +21 -21
- package/kit/kit.mjs +29 -0
- package/kit/project/README.md +1 -1
- package/kit/templates/backend/docs/architecture/stack.md +7 -7
- package/kit/templates/backend/docs/architecture/structure.md +2 -2
- package/kit/templates/mobile/docs/architecture/stack.md +5 -5
- package/kit/templates/mobile/docs/architecture/structure.md +1 -1
- package/kit/templates/mobile/docs/design/design-guide.md +1 -1
- package/kit/templates/mobile/tests/security/rls.mjs +4 -4
- package/kit/templates/web-saas/docs/architecture/stack.md +12 -12
- package/kit/templates/web-saas/docs/architecture/structure.md +2 -2
- package/kit/templates/web-saas/docs/design/design-guide.md +1 -1
- package/kit/templates/web-saas/tests/security/rls.mjs +4 -4
- package/package.json +1 -1
|
@@ -9,22 +9,22 @@ You are the **chair** of the expert board. You are not one of the members who wr
|
|
|
9
9
|
|
|
10
10
|
## Rules
|
|
11
11
|
|
|
12
|
-
- **Do not touch the numbers.** The council.mjs script produced the numbers in the "
|
|
13
|
-
- **Dropping:** You may drop a `
|
|
14
|
-
- **You cannot drop a
|
|
15
|
-
- **
|
|
12
|
+
- **Do not touch the numbers.** The council.mjs script produced the numbers in the "Overall ranking" section (before 3.48: "Toplu sıralama"). Do not recount or change them. Interpret them.
|
|
13
|
+
- **Dropping:** You may drop a `Disputed` (objections ≥ AGREE votes) IMPORTANT/SUGGESTION finding. Write your reason: which vote, which evidence.
|
|
14
|
+
- **You cannot drop a CRITICAL finding.** If it is `Disputed`, leave it as "ask the user" and write the reasons of both sides in one sentence.
|
|
15
|
+
- **REJECT** only if there is at least one CRITICAL finding that is not `Disputed` (objections < AGREE votes).
|
|
16
16
|
- Evaluate the **MISSING** lines in the cross-review. If they have evidence, add them as new findings (ids: X1, X2).
|
|
17
17
|
- In a decision council: Weigh the options by the recommendations in the first opinions, the rankings and the strength of the reasons. If the majority is wrong, do not follow it, but state the reason clearly. Judge each option together with its cost of reversal.
|
|
18
|
-
- If `
|
|
18
|
+
- If `Consensus` is low (below 60%), say so clearly, so the user decides knowingly.
|
|
19
19
|
- No praise, no repetition, no long summary.
|
|
20
20
|
|
|
21
21
|
## Output (only this section; the main agent appends it to the minutes)
|
|
22
22
|
|
|
23
23
|
```
|
|
24
|
-
## 4.
|
|
25
|
-
**
|
|
26
|
-
|
|
27
|
-
**
|
|
24
|
+
## 4. Chair decision
|
|
25
|
+
**Decision:** APPROVE | CONDITIONAL | REJECT ← meeting council
|
|
26
|
+
**Recommendation:** <option> ← decision council
|
|
27
|
+
**Eliminated:** <number>
|
|
28
28
|
REASON: <at most 3 sentences>
|
|
29
29
|
ACCEPTED FINDINGS: <id [severity] short — in order of severity>
|
|
30
30
|
DROPPED: <id — reason (vote/evidence)>
|
|
@@ -31,7 +31,7 @@ Do not write something you are not sure about as a finding. If it is doubtful, w
|
|
|
31
31
|
No praise, no summary. Only findings, starting with the most serious; at most ~15 lines in total, one line per finding:
|
|
32
32
|
|
|
33
33
|
```
|
|
34
|
-
[
|
|
34
|
+
[CRITICAL|IMPORTANT|MINOR] file:line — Problem. Concrete scenario (which input causes what). Suggestion.
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
Last line: **Ready to commit** or **Fix first: [short list of the
|
|
37
|
+
Last line: **Ready to commit** or **Fix first: [short list of the CRITICAL and IMPORTANT items]**.
|
|
@@ -24,9 +24,9 @@ ASSESSMENT:
|
|
|
24
24
|
- <option>: pro · con · cost of reversal (one line)
|
|
25
25
|
RISK: <the biggest risk of the option you chose and how to reduce it>
|
|
26
26
|
ASSUMPTION: <the unknown that would change your answer, if any>
|
|
27
|
-
|
|
27
|
+
RECOMMENDATION: <the name of one of the options, verbatim>
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
## Stage 2 (cross-review)
|
|
31
31
|
|
|
32
|
-
Follow the instruction you are given. Evaluate and rank by checking the claims in the other opinions. Give the ranking in exactly the requested format: first the `
|
|
32
|
+
Follow the instruction you are given. Evaluate and rank by checking the claims in the other opinions. Give the ranking in exactly the requested format: first the `RANKING:` line, then the `1. Opinion X` lines.
|
|
@@ -24,7 +24,7 @@ You are an application security auditor. Your default stance is skepticism: do n
|
|
|
24
24
|
3. **Data layer:** Are RLS/access rules present on every table? Is there string concatenation in raw SQL? Where is the admin/service key used?
|
|
25
25
|
4. **Secrets:** Variables that go to client code (`NEXT_PUBLIC_`, `EXPO_PUBLIC_`), keys embedded in code, sensitive data written to logs.
|
|
26
26
|
5. **Dependencies:** Run the vulnerability scan command (`docs/architecture/stack.md`). Verify that newly added packages are real and widely used.
|
|
27
|
-
6. **Adversarial tests** (`docs/quality/test-plan.md` §1b): For every endpoint that returns or writes data, are there tests for IDOR, unauthenticated access, role escalation, XSS and input limits? If not, KRİTİK.
|
|
27
|
+
6. **Adversarial tests** (`docs/quality/test-plan.md` §1b): For every endpoint that returns or writes data, are there tests for IDOR, unauthenticated access, role escalation, XSS and input limits? Adversarial test names start with `ATTACK:`; tests written before 3.48 may use `SALDIRI:`, and those count too. If not, KRİTİK.
|
|
28
28
|
7. **Agent security** (`docs/security/checklist.md` §8): In changes to `CLAUDE.md`, `.claude/`, `.mcp.json`, `.github/workflows/` `AGENTS.md`, `.codex/`, `.agents/`, is there a hidden instruction, privilege expansion or secret leak? Is there a new MCP server or an `@latest` version?
|
|
29
29
|
8. **AI features (if any):** Is model output handled like untrusted input? If the model triggers a tool/action, is there approval or a limit? Is there a per-user cost limit?
|
|
30
30
|
|
|
@@ -33,21 +33,21 @@ You are an application security auditor. Your default stance is skepticism: do n
|
|
|
33
33
|
Start with the most serious; at most ~15 lines in total, one line per finding:
|
|
34
34
|
|
|
35
35
|
```
|
|
36
|
-
[
|
|
36
|
+
[CRITICAL|HIGH|MEDIUM|LOW] file:line — Vulnerability. Exploit scenario (what the attacker does, what they gain). Fix.
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Then a table for the `docs/security/checklist.md` items: item | ✅/❌/❓ (could not verify) | note.
|
|
40
40
|
|
|
41
|
-
Last line: **No release blockers** or **Blockers: [
|
|
41
|
+
Last line: **No release blockers** or **Blockers: [CRITICAL and HIGH items]**.
|
|
42
42
|
|
|
43
43
|
**In a board meeting** (plan, task end, commit), use the board format instead of the full report:
|
|
44
44
|
|
|
45
45
|
```
|
|
46
|
-
MEMBER: Security · VERDICT:
|
|
46
|
+
MEMBER: Security · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
47
47
|
FINDINGS:
|
|
48
|
-
[
|
|
48
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — vulnerability (exploit scenario) — fix
|
|
49
49
|
ASK THE USER: [if any]
|
|
50
50
|
NOTE FOR OTHER MEMBERS: [if any]
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
If there is a
|
|
53
|
+
If there is a CRITICAL or HIGH finding, the verdict is REJECT.
|
|
@@ -17,7 +17,7 @@ If the prompt contains ready-made test code, do not copy it. Write the test your
|
|
|
17
17
|
|
|
18
18
|
## Rules
|
|
19
19
|
|
|
20
|
-
- At least one test per acceptance criterion; the criterion ID in the test name (
|
|
20
|
+
- At least one test per acceptance criterion; the criterion ID in the test name (`AC-01.1`). If authorization, payment or personal data is involved, write an adversarial test (another user, anonymous, malformed input).
|
|
21
21
|
- Edge cases: empty, zero, very large input, Turkish characters (`I/İ/ı/i`), date and time zone, concurrent requests; add the ones that fit the criterion.
|
|
22
22
|
- Keep expectations strict. Do not write loose expectations such as `toBeTruthy`, `toBeDefined`, or `expect` without a matcher. Do not leave `.skip`/`.only`.
|
|
23
23
|
- Write test files with Write/Edit. A test file written with Bash, a script or a patch stops at the commit gate: the gate recognizes only the content you leave with Write/Edit.
|
|
@@ -29,15 +29,15 @@ You are the **AI / LLM Specialist** on this project's expert board. You keep AI
|
|
|
29
29
|
## Output (board format; write nothing else)
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
MEMBER: AI / LLM Specialist · VERDICT:
|
|
32
|
+
MEMBER: AI / LLM Specialist · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
33
33
|
FINDINGS:
|
|
34
|
-
[
|
|
34
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
35
35
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
36
36
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
41
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
42
|
-
- No findings: write `VERDICT:
|
|
39
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
40
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
41
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
42
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
43
43
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -29,15 +29,15 @@ You are the **API Design Specialist** on this project's expert board. You keep t
|
|
|
29
29
|
## Output (board format; write nothing else)
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
MEMBER: API Design Specialist · VERDICT:
|
|
32
|
+
MEMBER: API Design Specialist · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
33
33
|
FINDINGS:
|
|
34
|
-
[
|
|
34
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
35
35
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
36
36
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
41
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
42
|
-
- No findings: write `VERDICT:
|
|
39
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
40
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
41
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
42
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
43
43
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -22,7 +22,7 @@ You are the **Software Architect** on this project's expert board. You are respo
|
|
|
22
22
|
- Compliance with the rules in `docs/architecture/stack.md` and the decisions in `docs/decisions/log.md`
|
|
23
23
|
- Scaling risks: N+1 queries, unbounded lists, concurrency, large files
|
|
24
24
|
- Need for a new dependency and its maintenance risk
|
|
25
|
-
- Folder structure: do new files follow the `.claude/structure.json` map and the rules in `docs/architecture/structure.md`? Do features reach into each other's internal files? A structure violation is
|
|
25
|
+
- Folder structure: do new files follow the `.claude/structure.json` map and the rules in `docs/architecture/structure.md`? Do features reach into each other's internal files? A structure violation is IMPORTANT; a new top-level folder outside the map is CRITICAL
|
|
26
26
|
|
|
27
27
|
## Your sources
|
|
28
28
|
|
|
@@ -31,15 +31,15 @@ You are the **Software Architect** on this project's expert board. You are respo
|
|
|
31
31
|
## Output (board format; write nothing else)
|
|
32
32
|
|
|
33
33
|
```
|
|
34
|
-
MEMBER: Software Architect · VERDICT:
|
|
34
|
+
MEMBER: Software Architect · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
35
35
|
FINDINGS:
|
|
36
|
-
[
|
|
36
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
37
37
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
38
38
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
- **
|
|
42
|
-
- **
|
|
43
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
44
|
-
- No findings: write `VERDICT:
|
|
41
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
42
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
43
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
44
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
45
45
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -29,15 +29,15 @@ You are the **Infrastructure and Operations Specialist** on this project's exper
|
|
|
29
29
|
## Output (board format; write nothing else)
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
MEMBER: Infrastructure and Operations Specialist · VERDICT:
|
|
32
|
+
MEMBER: Infrastructure and Operations Specialist · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
33
33
|
FINDINGS:
|
|
34
|
-
[
|
|
34
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
35
35
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
36
36
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
41
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
42
|
-
- No findings: write `VERDICT:
|
|
39
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
40
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
41
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
42
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
43
43
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -29,15 +29,15 @@ You are the **Mobile Platform Specialist** on this project's expert board. You k
|
|
|
29
29
|
## Output (board format; write nothing else)
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
MEMBER: Mobile Platform Specialist · VERDICT:
|
|
32
|
+
MEMBER: Mobile Platform Specialist · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
33
33
|
FINDINGS:
|
|
34
|
-
[
|
|
34
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
35
35
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
36
36
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
41
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
42
|
-
- No findings: write `VERDICT:
|
|
39
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
40
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
41
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
42
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
43
43
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -28,15 +28,15 @@ You are the **Performance and SEO Specialist** on this project's expert board. Y
|
|
|
28
28
|
## Output (board format; write nothing else)
|
|
29
29
|
|
|
30
30
|
```
|
|
31
|
-
MEMBER: Performance and SEO Specialist · VERDICT:
|
|
31
|
+
MEMBER: Performance and SEO Specialist · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
32
32
|
FINDINGS:
|
|
33
|
-
[
|
|
33
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
34
34
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
35
35
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
- **
|
|
39
|
-
- **
|
|
40
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
41
|
-
- No findings: write `VERDICT:
|
|
38
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
39
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
40
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
41
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
42
42
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -29,15 +29,15 @@ You are the **KVKK and Privacy Specialist** on this project's expert board. You
|
|
|
29
29
|
## Output (board format; write nothing else)
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
MEMBER: KVKK and Privacy Specialist · VERDICT:
|
|
32
|
+
MEMBER: KVKK and Privacy Specialist · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
33
33
|
FINDINGS:
|
|
34
|
-
[
|
|
34
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
35
35
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
36
36
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
41
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
42
|
-
- No findings: write `VERDICT:
|
|
39
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
40
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
41
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
42
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
43
43
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -17,7 +17,7 @@ You are the **Product Manager** on this project's expert board. You look through
|
|
|
17
17
|
## What you check
|
|
18
18
|
|
|
19
19
|
- Fit with the PRD's features and acceptance criteria; any criterion left unmet
|
|
20
|
-
- Scope creep: a feature not in the PRD, or something from the "
|
|
20
|
+
- Scope creep: a feature not in the PRD, or something from the "Out of scope" list being built
|
|
21
21
|
- Breaks in the user flow: can the user understand the next step?
|
|
22
22
|
- Effect on success criteria; should a more valuable task be moved up?
|
|
23
23
|
- Needless complexity that reaches the user
|
|
@@ -30,15 +30,15 @@ You are the **Product Manager** on this project's expert board. You look through
|
|
|
30
30
|
## Output (board format; write nothing else)
|
|
31
31
|
|
|
32
32
|
```
|
|
33
|
-
MEMBER: Product Manager · VERDICT:
|
|
33
|
+
MEMBER: Product Manager · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
34
34
|
FINDINGS:
|
|
35
|
-
[
|
|
35
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
36
36
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
37
37
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
- **
|
|
41
|
-
- **
|
|
42
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
43
|
-
- No findings: write `VERDICT:
|
|
40
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
41
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
42
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
43
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
44
44
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -22,7 +22,7 @@ You are the **Test and Quality Specialist** on this project's expert board. You
|
|
|
22
22
|
- Regression test on bug fixes
|
|
23
23
|
- Does the shown evidence (`docs/architecture/stack.md` → "Verification") support the claim?
|
|
24
24
|
- Flaky test risk: time, order, network dependence
|
|
25
|
-
- Acceptance tests: does every acceptance criterion (
|
|
25
|
+
- Acceptance tests: does every acceptance criterion (AC-01.1...) have a test carrying its id, written before the code? A criterion marked in the PRD with no test is CRITICAL
|
|
26
26
|
- For feature-flagged features, is there also a test with the flag off?
|
|
27
27
|
|
|
28
28
|
## Your sources
|
|
@@ -32,15 +32,15 @@ You are the **Test and Quality Specialist** on this project's expert board. You
|
|
|
32
32
|
## Output (board format; write nothing else)
|
|
33
33
|
|
|
34
34
|
```
|
|
35
|
-
MEMBER: Test and Quality Specialist · VERDICT:
|
|
35
|
+
MEMBER: Test and Quality Specialist · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
36
36
|
FINDINGS:
|
|
37
|
-
[
|
|
37
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
38
38
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
39
39
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
- **
|
|
43
|
-
- **
|
|
44
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
45
|
-
- No findings: write `VERDICT:
|
|
42
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
43
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
44
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
45
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
46
46
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
|
@@ -30,15 +30,15 @@ You are the **UX and Design Specialist** on this project's expert board. You mak
|
|
|
30
30
|
## Output (board format; write nothing else)
|
|
31
31
|
|
|
32
32
|
```
|
|
33
|
-
MEMBER: UX and Design Specialist · VERDICT:
|
|
33
|
+
MEMBER: UX and Design Specialist · VERDICT: APPROVE | CONDITIONAL | REJECT
|
|
34
34
|
FINDINGS:
|
|
35
|
-
[
|
|
35
|
+
[CRITICAL|IMPORTANT|SUGGESTION] file:line — problem (concrete scenario) — suggestion
|
|
36
36
|
ASK THE USER: [if any, the decision the user must make, one line with its options]
|
|
37
37
|
NOTE FOR OTHER MEMBERS: [if you saw something serious outside your area, one line]
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
- **
|
|
41
|
-
- **
|
|
42
|
-
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is
|
|
43
|
-
- No findings: write `VERDICT:
|
|
40
|
+
- **REJECT** only when there is a CRITICAL finding: security hole, risk of data loss, legal violation, unmet acceptance criterion.
|
|
41
|
+
- **CONDITIONAL:** approve if the IMPORTANT findings are fixed.
|
|
42
|
+
- **Gate output** (`gate.mjs`), if given: read it first. A red (❌) check is CRITICAL; give REJECT. Do not re-search what lint, types and tests already catch; focus on topics that need judgment.
|
|
43
|
+
- No findings: write `VERDICT: APPROVE` and `FINDINGS: none`. No praise, summary or long explanations.
|
|
44
44
|
- If unsure, tag the finding `[UNVERIFIED]` and say how to verify it.
|
package/.claude/board/council.md
CHANGED
|
@@ -9,14 +9,14 @@
|
|
|
9
9
|
|
|
10
10
|
## When
|
|
11
11
|
|
|
12
|
-
The project profile decides which meetings and decisions go to the council (`docs/workflow/progress.md` → `**
|
|
12
|
+
The project profile decides which meetings and decisions go to the council (`docs/workflow/progress.md` → `**Profile:**`; chosen in `/start` Step 0):
|
|
13
13
|
|
|
14
|
-
| | **
|
|
14
|
+
| | **Light** (recommended for Pro) | **Standard** | **Full** |
|
|
15
15
|
|---|---|---|---|
|
|
16
16
|
| Add-ons | Core: ponytail, caveman, mattpocock-skills, impeccable, humanizer, security-guidance (+ the type's LSP and stack skills). The others are turned off at project scope | All on | All on |
|
|
17
17
|
| Commit review (haiku board on every commit) | Off | On | On |
|
|
18
|
-
| Command list (descriptions in the skill list) | 10 core commands with descriptions, 18 by name only | Like
|
|
19
|
-
| Meeting council (3 stages) | None; meetings are single-stage | Phase end, go-live | Plan, phase end, go-live,
|
|
18
|
+
| Command list (descriptions in the skill list) | 10 core commands with descriptions, 18 by name only | Like Light | All with descriptions |
|
|
19
|
+
| Meeting council (3 stages) | None; meetings are single-stage | Phase end, go-live | Plan, phase end, go-live, REJECT |
|
|
20
20
|
| Decision council | Database and auth decision | Database and auth decision | All one-way decisions |
|
|
21
21
|
|
|
22
22
|
Measurement (2026-10-12): One council used about 12% of the 5-hour limit on Pro.
|
|
@@ -24,8 +24,8 @@ Measurement (2026-10-12): One council used about 12% of the 5-hour limit on Pro.
|
|
|
24
24
|
| Case (if the profile allows) | Council type | Stage 1 members | Chair |
|
|
25
25
|
|---|---|---|---|
|
|
26
26
|
| Plan, phase-end, go-live meeting | **Meeting council** | Board members chosen by rules.md §3 (with the review role's model) | `board-chair` |
|
|
27
|
-
|
|
|
28
|
-
| One-way door decision (
|
|
27
|
+
| REJECT in a task-end meeting | Meeting council (stages 2 and 3 only) | The member who gave REJECT + the other members of that meeting | `board-chair` |
|
|
28
|
+
| One-way door decision (Light/Standard: database and auth only; Full: all; `docs/workflow/decision-protocol.md` §2a) or `/board council <question>` in any profile | **Decision council** | 3 × `council-advisor`: `haiku`, `sonnet`, `opus` (same question, different model) | `board-chair` |
|
|
29
29
|
|
|
30
30
|
- Task-end and commit meetings stay single-stage (rules.md §4).
|
|
31
31
|
- If the limit is yellow: the decision council runs with 2 advisors (`sonnet`, `opus`), and at most 3 members join stage 2 in a meeting council.
|
|
@@ -33,75 +33,75 @@ Measurement (2026-10-12): One council used about 12% of the 5-hour limit on Pro.
|
|
|
33
33
|
|
|
34
34
|
## Minutes
|
|
35
35
|
|
|
36
|
-
Each council is a single file: `docs/workflow/council/YYYY-
|
|
36
|
+
Each council is a single file: `docs/workflow/council/YYYY-MM-DD-<type>-<short-topic>.md`. The main agent writes the raw output of the stages here. To keep context small, later steps carry the file path, not the minutes.
|
|
37
37
|
|
|
38
38
|
```markdown
|
|
39
|
-
#
|
|
40
|
-
**
|
|
39
|
+
# Council: <type> · <topic>
|
|
40
|
+
**Date:** 2026-10-12 · **Type:** plan | phase-end | go-live | reject | decision
|
|
41
41
|
**Task:** G-012 (if any)
|
|
42
42
|
|
|
43
43
|
## Question
|
|
44
44
|
<decision council: the question, the options (one line each), context files. Meeting: scope and acceptance criteria>
|
|
45
45
|
|
|
46
|
-
## 1.
|
|
47
|
-
###
|
|
48
|
-
- A1 [
|
|
49
|
-
- A2 [
|
|
50
|
-
|
|
51
|
-
###
|
|
46
|
+
## 1. First opinions
|
|
47
|
+
### Opinion A
|
|
48
|
+
- A1 [CRITICAL] file:line — problem — suggestion
|
|
49
|
+
- A2 [IMPORTANT] ...
|
|
50
|
+
RECOMMENDATION: <option name> ← decision council only
|
|
51
|
+
### Opinion B
|
|
52
52
|
...
|
|
53
53
|
|
|
54
|
-
## 2.
|
|
55
|
-
###
|
|
54
|
+
## 2. Cross review
|
|
55
|
+
### Reviewer: A
|
|
56
56
|
<strengths and weaknesses of each opinion, short>
|
|
57
|
-
|
|
58
|
-
B1:
|
|
57
|
+
VOTES:
|
|
58
|
+
B1: AGREE | DISAGREE | OVERSTATED
|
|
59
59
|
MISSING: <something important nobody saw, if any, one line>
|
|
60
|
-
|
|
61
|
-
1.
|
|
62
|
-
2.
|
|
60
|
+
RANKING:
|
|
61
|
+
1. Opinion C
|
|
62
|
+
2. Opinion B
|
|
63
63
|
|
|
64
|
-
## 3.
|
|
64
|
+
## 3. Overall ranking
|
|
65
65
|
<written by council.mjs>
|
|
66
66
|
|
|
67
|
-
## 4.
|
|
67
|
+
## 4. Chair decision
|
|
68
68
|
<written by board-chair>
|
|
69
69
|
|
|
70
|
-
##
|
|
70
|
+
## IDs
|
|
71
71
|
A = board-architect (sonnet) · B = security-auditor (sonnet) · C = board-product (haiku)
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
## Stages
|
|
75
75
|
|
|
76
|
-
1. **First opinions (parallel).** Give each member the task in its own format (in a meeting, the board format in the member file; in a decision council, the `council-advisor` format). The replies are labeled A, B, C… in random order. Findings get ids: A1, A2, B1… Write the label-to-id mapping only in the "
|
|
76
|
+
1. **First opinions (parallel).** Give each member the task in its own format (in a meeting, the board format in the member file; in a decision council, the `council-advisor` format). The replies are labeled A, B, C… in random order. Findings get ids: A1, A2, B1… Write the label-to-id mapping only in the "IDs" section at the end of the minutes. Minutes written before 3.48 use the Turkish headings and words (Görüş, İnceleyen, OYLAR, SIRALAMA, DOĞRU/YANLIŞ/ABARTILI); council.mjs and the dashboard still read them.
|
|
77
77
|
2. **Cross-review (parallel).** Give each reviewer the following and pass the instruction below verbatim:
|
|
78
78
|
- The "Question" section of the minutes.
|
|
79
79
|
- The other opinions, **excluding** their own. Do not say who wrote them or which model wrote them.
|
|
80
80
|
- Give each reviewer the opinions in a different order (reduces order effects).
|
|
81
81
|
|
|
82
|
-
> You do not know who wrote the opinions below. For each one, write what is good and what is missing, in no more than two sentences. Then vote on each finding:
|
|
82
|
+
> You do not know who wrote the opinions below. For each one, write what is good and what is missing, in no more than two sentences. Then vote on each finding: AGREE (evidenced and severity is right), OVERSTATED (real but low importance), DISAGREE (no match in the code or context). When voting, check the claim in the code or docs. Do not vote on a guess. If nobody saw something important, write it on the MISSING line. At the end, rank in exactly this format: first the "RANKING:" line, then "1. Opinion X" lines from best to worst, no other text.
|
|
83
83
|
|
|
84
84
|
In a meeting council, the reviewers are the same members. In a decision council, they are the same advisors.
|
|
85
85
|
3. **Counting.** The command `node .claude/hooks/council.mjs <minutes>` computes the following and writes it to the minutes:
|
|
86
86
|
- Average rank.
|
|
87
87
|
- Vote distribution for each finding.
|
|
88
|
-
- `
|
|
89
|
-
- `
|
|
88
|
+
- `Disputed` findings: when the number of objections (DISAGREE + OVERSTATED) is equal to or greater than the number of AGREE votes.
|
|
89
|
+
- `Consensus` percentage.
|
|
90
90
|
4. **Chair.** Run `board-chair` (opus) and give it the path of the minutes. The chair writes:
|
|
91
91
|
- The final decision.
|
|
92
92
|
- The dropped findings and the reasons.
|
|
93
93
|
- The minority view.
|
|
94
94
|
|
|
95
95
|
Rules the chair must follow:
|
|
96
|
-
- The chair cannot drop a `
|
|
97
|
-
-
|
|
96
|
+
- The chair cannot drop a `Disputed` **CRITICAL** finding alone. That finding stays as "ask the user".
|
|
97
|
+
- REJECT is given only if at least one CRITICAL finding is not `Disputed`.
|
|
98
98
|
5. **User.** The main agent shows the chair's decision in the synthesis format of rules.md §4.
|
|
99
99
|
- In a decision council, the AskUserQuestion options come from the council:
|
|
100
100
|
- The option the chair recommends comes first and is labeled "(Recommended)".
|
|
101
101
|
- Add "Council: n/N first opinions · avg. rank x" to each option's description.
|
|
102
102
|
- The minority view is written in one sentence in the description of its own option.
|
|
103
103
|
6. **Record.**
|
|
104
|
-
- Add one line to `docs/workflow/board.md` → "
|
|
104
|
+
- Add one line to `docs/workflow/board.md` → "Meeting log" (meeting log). Write the link to the minutes in the scope column.
|
|
105
105
|
- For a decision council, add the reference "Council: <minutes>" to `docs/decisions/log.md` and to the ADR.
|
|
106
106
|
|
|
107
107
|
## Why
|
package/.claude/board/rules.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
## 1. Authority: advisor, and stops on critical findings
|
|
8
8
|
|
|
9
9
|
- The board gives opinions, warnings and decision proposals. **The user decides.**
|
|
10
|
-
- If a member gives **
|
|
10
|
+
- If a member gives **REJECT** (a CRITICAL finding: security hole, data-loss risk, legal violation, acceptance criterion not met), the work does not count as "done" and is not committed. Show the user the finding and the options: fix (recommended) / accept the risk and record the reason / roll the task back.
|
|
11
11
|
- If members disagree, the main agent does not pick alone. Put both views side by side and **ask the user as a decision**.
|
|
12
12
|
|
|
13
13
|
## 2. Meetings
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
|
|
23
23
|
Commits that contain only documentation changes (`.md`, `docs/`) are exempt from review.
|
|
24
24
|
|
|
25
|
-
**Council (three stages):** The project profile decides which meetings go to the council (`.claude/board/council.md` → "When"). In the
|
|
25
|
+
**Council (three stages):** The project profile decides which meetings go to the council (`.claude/board/council.md` → "When"). In the Full profile, plan, phase-end and go-live meetings, and task-end meetings that end in REJECT, follow the `.claude/board/council.md` protocol. In Standart, only phase-end and go-live. In Hafif, none. First opinions are collected first. Then members vote on and rank each other's findings anonymously. Last, `board-chair` decides. Task-end and commit meetings are single-stage.
|
|
26
26
|
|
|
27
27
|
## 3. Who is relevant? (pick members by change)
|
|
28
28
|
|
|
@@ -46,7 +46,7 @@ Do not call a member who is not on the board. If the relevant area has no member
|
|
|
46
46
|
## 4. How to run a meeting
|
|
47
47
|
|
|
48
48
|
1. **Limit check** (`docs/workflow/usage-limits.md`): If the level is yellow, halve the member count. If red, ask the user (including the option to lighten the board). For a task-end meeting, `node .claude/hooks/flow.mjs` gives the member count and whether to run in parallel or in sequence (change size + limit; `code-reviewer` always attends, and `security-auditor` on a sensitive path).
|
|
49
|
-
1b. **Deterministic gate** (commit, task end, phase end; not in the plan meeting): `node .claude/hooks/gate.mjs --run`. It runs the lint, type check and test from AGENTS.md → `Komutlar`, plus Semgrep. The result is stored with the change signature. If it is red or empty (no check ran), the commit gate does not open: fix first or fill in `Komutlar`. If the user explicitly asks for an intermediate commit, use `node .claude/hooks/commit-gate.mjs --skip "
|
|
49
|
+
1b. **Deterministic gate** (commit, task end, phase end; not in the plan meeting): `node .claude/hooks/gate.mjs --run`. It runs the lint, type check and test from AGENTS.md → `Komutlar`, plus Semgrep. The result is stored with the change signature. If it is red or empty (no check ran), the commit gate does not open: fix first or fill in `Komutlar`. If the user explicitly asks for an intermediate commit, use `node .claude/hooks/commit-gate.mjs --skip "user request"` (it always asks for approval). If the gate says "command approval required", show the commands to the user. If the user approves, run `node .claude/hooks/gate.mjs --approve` (a new or changed command does not run without approval).
|
|
50
50
|
1c. **In a commit meeting, first** run `node .claude/hooks/commit-gate.mjs --status`. If it says "Approval valid", there is no meeting (the task-end meeting already reviewed the same changes). If it says "Changed since the last approval: …", give the members only the diff of those files.
|
|
51
51
|
2. **Run the members in parallel** (Agent tool, each member as a separate subagent). Give each member: meeting type, scope (plan text / diff range / phase), task id, acceptance criteria and gate output (if any). In the call, pass the `model` and `effort` of the review role (`node .claude/hooks/models.mjs --show`). In a commit meeting, pass `model: "haiku"`, `effort: "low"`. Write the report contract in the prompt: max ~15 lines and 5 findings (any more as one line: "other: N minor findings"), one line per finding, in order of severity, no praise or summary (reports enter the main session's context). Prompt order: the part that is the same for all members (meeting type, scope, acceptance criteria, gate output) first, the member-specific part last; the shared head is read from cache. If a re-check is needed after fixes, do not start a new member. Continue the same member with SendMessage and give only the fixed diff (the cold start is paid once).
|
|
52
52
|
2b. **If it is a council meeting** (§2), apply stages 1-4 of `.claude/board/council.md`. Build the synthesis from the chair's decision. Write the minority view on the disagreement line.
|
|
@@ -54,18 +54,18 @@ Do not call a member who is not on the board. If the relevant area has no member
|
|
|
54
54
|
|
|
55
55
|
```
|
|
56
56
|
## Board: [type] · [scope]
|
|
57
|
-
Attended: [members] · Result:
|
|
57
|
+
Attended: [members] · Result: APPROVE | CONDITIONAL | REJECT
|
|
58
58
|
Critical: [if any]
|
|
59
59
|
Important: [merged, no duplicates, in order of severity]
|
|
60
60
|
Disagreement: [the two views, if any]
|
|
61
61
|
To ask the user: [decisions the members flagged]
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
4. **Inform the user and ask:** Ask the decisions with AskUserQuestion. Ask which findings to fix as a **multi-select**, with
|
|
65
|
-
5. **Record:** Add one line to `docs/workflow/board.md` → "
|
|
66
|
-
6. **If the commit meeting result is
|
|
64
|
+
4. **Inform the user and ask:** Ask the decisions with AskUserQuestion. Ask which findings to fix as a **multi-select**, with CRITICAL ones marked as recommended.
|
|
65
|
+
5. **Record:** Add one line to `docs/workflow/board.md` → "Meeting log". Add the decisions to the decision log `docs/decisions/log.md`. Write open findings to `docs/workflow/progress.md` → "Open issues / blockers".
|
|
66
|
+
6. **If the commit meeting result is APPROVE or CONDITIONAL,** open the commit gate: `node .claude/hooks/commit-gate.mjs --approve "<attending members>"`. If REJECT, do not open it; ask the user first.
|
|
67
67
|
|
|
68
|
-
If the user wants to skip commit review for now, they must say so explicitly. Then run `node .claude/hooks/commit-gate.mjs --skip "
|
|
68
|
+
If the user wants to skip commit review for now, they must say so explicitly. Then run `node .claude/hooks/commit-gate.mjs --skip "user request"` (it asks for approval) and write it to the log. To turn it off permanently: `docs/workflow/board.md` → `**Commit review:** off`.
|
|
69
69
|
|
|
70
70
|
## 5. How to set up the board (`/start` board step or `/board setup`)
|
|
71
71
|
|