원클릭으로
council
Run 8-persona Council validation on a feature/ADR, then auto-create a Linear ticket if score >= 8/10.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Run 8-persona Council validation on a feature/ADR, then auto-create a Linear ticket if score >= 8/10.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Force a full-file rewrite (Write) instead of patch (Edit) when Edit keeps failing or diff is large. Context rot mitigation — use when Edit has failed ≥2× on same file, or when estimated diff >30% of file size.
STOA PR Guardian — advisory three-axis review (ADR compliance, security, AI code smell) with binary GO/NO-GO verdict + confidence. Never approves, never blocks merge.
Analyze cycle capacity gap and propose backlog items to fill the sprint to ~80% of proven velocity.
Visual roadmap snapshot — theme progress, milestones, velocity. Zero new infra (Linear MCP + velocity.json).
Cycle-aware bidirectional sync between plan.md and Linear. Discovers all cycle tickets, detects drift, updates markers.
Debug GitHub Actions CI pipeline failures. Analyse les logs de workflow, identifie la cause racine et propose un fix.
| name | council |
| description | Run 8-persona Council validation on a feature/ADR, then auto-create a Linear ticket if score >= 8/10. |
| argument-hint | <description of what to build> |
This skill drives Stage 1 (ticket pertinence) and Stage 2 (plan validation) — both prose-based, 8-persona scoring per the canonical Team Coca jury (HEG-PAT-003).
Stage 3 (code review) runs after implementation on the actual diff, via scripts/council-review.sh (4-axis: conformance, debt, attack_surface, contract_impact). It is not invoked by this skill — it is wired to the pre-push hook (CAB-2048) and council-gate.yml CI workflow (CAB-2049). See .claude/docs/council-s3.md for full docs.
S1 (this skill, prose) → S2 (this skill, plan) → implementation → S3 (council-review.sh, diff) → merge
Read and understand the feature/ADR/change description. Gather context from:
memory.md — current sprint, related workplan.md — where this fits in prioritiesRun the Context Compiler to get the blast radius before scoring:
docs/scripts/build-context.sh --component <component> --intent "$ARGUMENTS"
--ticket "CAB-XXXX"docs/context-packs/If build-context.sh or stoa-impact.db is not available, skip this step with a warning and proceed without impact scoring.
Evaluate $ARGUMENTS through each of the 8 canonical personas. All 8 are mandatory — no subset selection, no quick mode. The canonical roster is defined in hegemon/patterns/validation/HEG-PAT-003-team-coca-adversarial-validation.md.
Domain N/A baseline (calibration rule from CAB-2054 Phase 4): when a ticket does not touch a persona's domain (e.g., a backend infra ticket has no webapp surface for N3m0), score the persona at 8/10 (neutral-positive: "no concern detected"), not 6-7. Lower scores must be backed by an actual identified concern. This rule keeps the 8-persona average stable vs the historical 4-persona baseline (calibration drift < ±0.3 on 4/5 historic tickets).
Present each persona's evaluation:
## Council Validation
### Chucky (Devil's Advocate) — X/10
**Verdict**: Go | Fix | Redo
<2-3 sentences: key concerns or approval>
**Adjustments**: <specific changes required, or "None">
### N3m0 (Webapp Security) — X/10
**Verdict**: Go | Fix | Redo
<2-3 sentences>
**Adjustments**: <specific changes required, or "None">
### Gh0st (Supply Chain) — X/10
**Verdict**: Go | Fix | Redo
<2-3 sentences>
**Adjustments**: <specific changes required, or "None">
### Pr1nc3ss (Social Engineering) — X/10
**Verdict**: Go | Fix | Redo
<2-3 sentences>
**Adjustments**: <specific changes required, or "None">
### OSS Killer (VC Skeptique) — X/10
**Verdict**: Go | Fix | Redo
<2-3 sentences>
**Adjustments**: <specific changes required, or "None">
### Archi 50x50 (Architecte Veteran) — X/10
**Verdict**: Go | Fix | Redo
<2-3 sentences>
**Adjustments**: <specific changes required, or "None">
### Better Call Saul (Legal/IP) — X/10
**Verdict**: Go | Fix | Redo
<2-3 sentences>
**Adjustments**: <specific changes required, or "None">
### Gekk0 (Monétisation / GTM) — X/10
**Verdict**: Go | Fix | Redo
<2-3 sentences>
**Adjustments**: <specific changes required, or "None">
---
**Persona Average**: X.XX/10 (averaged over 8 personas)
**Impact Score**: N (LEVEL) | Modifier: -Y.Y
**Final Score**: X.XX/10
**Global Verdict**: Go | Fix | Redo
**Adjustments to apply**: <numbered list of all adjustments from all 8 personas>
The Impact Score from Step 1b applies a risk modifier to the persona average:
| Impact Level | Score Range | Modifier | Rationale |
|---|---|---|---|
| LOW | 0-5 | 0 | Isolated change, no risk adjustment |
| MEDIUM | 6-15 | 0 | Manageable blast radius |
| HIGH | 16-30 | -0.5 | Significant cross-component risk |
| CRITICAL | 31+ | -1.0 | Major blast radius, forces careful review |
Final Score = Persona Average + Impact Modifier
If Step 1b was skipped (no DB), Impact Modifier = 0.
| Final Score | Action |
|---|---|
| >= 8.0 | Go — Auto-create Linear ticket (Step 4) |
| 6.0 - 7.9 | Fix — List adjustments, ask user to confirm, then create ticket |
| < 6.0 | Redo — Fundamental issues, do NOT create ticket. Propose alternatives. |
After scoring, apply the appropriate Stage 1 label to the Linear ticket (if one exists or is being created):
| Score Range | Label | Color |
|---|---|---|
| >= 8.0 | council:ticket-go | green (#0e8a16) |
| 6.0 - 7.9 | council:ticket-fix | amber (#e4b400) |
| < 6.0 | council:ticket-redo | red (#d73a49) |
Apply via: linear.update_issue(id, labels: [existing_labels..., "council:ticket-go|fix|redo"])
If the ticket already has a council:ticket-* label, replace it (remove old, add new).
If Council passes (Go or Fix-then-confirmed), create the ticket using Linear MCP:
linear.create_issue(
title: "<type>(scope): <short description>",
description: <see template below>,
team: "<LINEAR_TEAM_ID>",
project: "<LINEAR_PROJECT_ID>",
assignee: "<LINEAR_ASSIGNEE_ID>",
estimate: <fibonacci points>,
priority: <1=Urgent, 2=High, 3=Normal, 4=Low>,
labels: [<type label>, <priority label>, "hlfh:validated", "council:ticket-go|fix", "instance:<detected-instance>"],
state: "Todo"
)
## Context
<1-2 paragraphs: what and why>
## Council Validation — X.XX/10 {Go|Fix} | Impact: N (LEVEL, modifier -Y.Y)
| Persona | Score | Verdict |
|---------|-------|---------|
| Chucky (Devil's Advocate) | X/10 | Go |
| N3m0 (Webapp Security) | X/10 | Go |
| Gh0st (Supply Chain) | X/10 | Go |
| Pr1nc3ss (Social Engineering) | X/10 | Go |
| OSS Killer (VC Skeptique) | X/10 | Go |
| Archi 50x50 (Architecte Veteran) | X/10 | Go |
| Better Call Saul (Legal/IP) | X/10 | Go |
| Gekk0 (Monétisation / GTM) | X/10 | Go |
### Adjustments Applied
1. <adjustment 1>
2. <adjustment 2>
## Scope
<Bullet list of what's in/out of scope>
## Implementation Phases
<Numbered list of phases with estimated LOC>
## DoD
- [ ] <acceptance criteria 1>
- [ ] <acceptance criteria 2>
- [ ] State files updated (memory.md, plan.md)
- [ ] CI green
| Complexity | Points | Examples |
|---|---|---|
| Trivial | 1-2 | Config change, docs update, single-file fix |
| Small | 3-5 | Single component, <150 LOC, clear scope |
| Medium | 8-13 | Multi-component, <300 LOC, needs design |
| Large | 21-34 | Cross-cutting, >300 LOC, multiple PRs |
| Epic | 55+ | Multi-sprint, architectural change |
| Signal | Priority | Linear Label |
|---|---|---|
| Demo blocker, production down | 1 (Urgent) | P0-Urgent |
| This week, user-facing | 2 (High) | P1-High |
| This sprint | 3 (Normal) | P2-Medium |
| Backlog, nice-to-have | 4 (Low) | P3-Low |
After ticket creation and before implementation begins, run Stage 2 to validate the implementation plan.
| Level | Stage 2? | Trigger |
|---|---|---|
| L1 Issue-to-PR | Yes | /go triggers Stage 2, /go-plan triggers implement |
| L3 Linear Dispatch | Yes | /go triggers Stage 2, /go-plan triggers implement |
| L3.5 Autopilot | No (batch, Stage 1 only) | Unchanged |
| L5 Multi-Agent | No (batch, Stage 1 only) | Unchanged |
/council local | Yes | /council plan "..." triggers Stage 2 |
| Score Range | Label | Color |
|---|---|---|
| >= 8.0 | council:plan-go | teal (#006b75) |
| 6.0 - 7.9 | council:plan-fix | dark amber (#b45309) |
| < 6.0 | council:plan-redo | dark red (#8b0000) |
Apply via: linear.update_issue(id, labels: [existing_labels..., "council:plan-go|fix|redo"])
Stage 1 passes (council:ticket-go)
↓ /go
Claude writes implementation plan (posted as issue comment)
↓ plan posted
Stage 2 validates the plan (4 personas, plan-focused rubric)
↓ council:plan-go applied to Linear
Comment `/go-plan` to approve and start implementation
After ticket creation, append to the appropriate section in plan.md:
- [ ] CAB-XXXX: <title> (<points> pts) — Council X.XX/10
Council: X.XX/10 — Go
Ticket: CAB-XXXX (<points> pts)
Linear: <URL>
plan.md: updated
Next: say "go" to start implementation, or "adjust <feedback>" to revise
Stage 3 is not run by this skill. It runs automatically against the diff once implementation is complete, via scripts/council-review.sh. Shape:
| Axis | Role |
|---|---|
conformance | Repo conventions, style, naming, structure |
debt | Shortcuts, TODOs, test gaps, premature abstractions |
attack_surface | Input validation, authn/z, secrets, SSRF, PII, CORS, deps |
contract_impact | Cross-component contracts (skipped when docs/stoa-impact.db is stale) |
Exit codes: 0 APPROVED (avg >= 8.0), 1 REWORK, 2 technical failure.
Trigger points (when wired):
| Level | Trigger | How |
|---|---|---|
| Local pre-push | git push | Pre-push hook extension (CAB-2048) |
| CI | PR opened | .github/workflows/council-gate.yml feature-flagged via vars.COUNCIL_S3_ENABLED (CAB-2049) |
| Manual | Any diff | scripts/council-review.sh --ticket CAB-XXXX --diff <range> |
When S3 returns REWORK, address the per-axis blockers/warnings and re-run. Full documentation: .claude/docs/council-s3.md.
/create-adr skill after Council passes (ADR lives in stoa-docs)mega-ticket label automaticallycouncil:ticket-*) are applied after every Council scoring (Step 3b)council:plan-*) are applied after plan validation (Step 4b)