Install
$ agentstack add skill-indranildchandra-claude-local-starter-review-council ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Review Council Protocol
Token budget — read this first
Load personas on demand, never all at once.
- There are 20+ persona files. Loading all of them would consume the entire context window.
- In Phase 2 you select 3–6 personas. Load only those files — nothing else.
- Each persona subagent receives only: its own persona file + domain profile + scope brief. No other context.
- Subagents run in isolation — they do not inherit the parent session's full context.
- Persona outputs returned to the parent are compressed (max 300 words each).
- If you find yourself loading more than 6 persona files, stop and reduce the council size.
Overview
The council reviews code, architecture, or design decisions using independent expert personas that debate, challenge each other, and converge on a verdict. The human engineer is an active participant, not a passive recipient.
Minimum council size: 3 personas. Council size by complexity:
simple(single component, low risk): 3 personasmedium(cross-cutting feature, moderate risk): 4–5 personascomplex(system-level, high risk, multiple teams): 5–6 personas
Always include at least one of: staff-engineer, cloud-cost-architect, appsec-architect — cost and security angles must be represented in every council.
Phase 0 — Scope + Early Human Input
- If
/design-reviewwas called with a scope argument, use it as-is. - If no argument: run a quick repo scan (1 Haiku subagent,
gitnexus ctx_searchor file glob) to identify the highest-risk or most recently changed area. Propose this as scope. - Present to human and ask:
- "Does this scope look right, or do you want to focus elsewhere?"
- "What concerns you most about this? Any known constraints (deadline, regulatory, performance budget)?"
- "Any personas you want added or removed from the council?"
- Record answers verbatim as the Phase 0 Human Brief — this shapes everything downstream.
- If the user requests a persona not in
standard-personas/: generate it using the schema inuser-generated-personas/README.md, save it touser-generated-personas/.mdglobally, then use it in this session.
Phase 1 — Domain Fingerprinting (1 Haiku subagent)
Input: scope from Phase 0 Task: Analyse the scoped code/design and output:
- Tech stack and architectural patterns
- Key risk areas
- Scale characteristics (current and anticipated)
- Complexity rating:
simple|medium|complex
Output format (compressed, ~200 words):
Domain:
Stack:
Patterns:
Risk areas:
Scale:
Complexity: simple | medium | complex
Phase 2 — Persona Selection (main context)
- From Phase 1 domain profile + Phase 0 human input, select personas from
standard-personas/. - Load only the selected persona files — do not load all 20.
- Apply council size rule from complexity rating.
- Ensure at least one of:
staff-engineer,cloud-cost-architect,appsec-architect. - Add any user-requested custom personas.
- Present the council lineup to the human: "Council will be: [list]. Proceed?"
Phase 3 — Independent Review (N parallel subagents)
One subagent per persona. Model is specified in each persona file's frontmatter.
Each subagent receives ONLY:
- The persona file (defines their role and review lens)
- The domain profile from Phase 1
- The scope brief and Phase 0 Human Brief
Subagents are isolated — they cannot see each other's output.
Each subagent returns this compressed structure (max 300 words):
## [Persona Name]
**Stance:** proceed | caution | block
**Top findings:**
-
-
-
**Blocker (if any):**
**Questions to council:**
-
-
Phase 4 — Council Session (main context)
- Present all Phase 3 outputs together.
- For each persona, write a brief response (2-4 sentences) to the key challenges raised by the others that affect their domain.
- Identify from the debate:
- Converged concerns — issues ≥2 personas flagged independently (highest signal)
- Blocking concerns — issues that must be resolved before proceeding
- Rule: 1 persona to raise a blocker, 2 personas to dismiss it
- Human can unilaterally override any blocker — override is recorded explicitly with rationale
- Domain opinions — valid tradeoffs that don't block
- Open questions — cannot be resolved without more information or human input
Phase 5 — Human Input (interactive pause)
Present to the human:
- Summary of converged concerns (max 3 bullets)
- Any blocking concerns
- 2–3 pointed questions the council cannot resolve without human input (priorities, constraints, risk tolerance, product decisions)
Wait for human response. Record verbatim.
If human overrides a blocker: Record: "[Human] overrode blocker raised by [Persona]: [blocker]. Stated rationale: [rationale]."
Phase 6 — Synthesis (main context)
- Incorporate Phase 5 human input into the council's conclusions.
- Resolve open questions where possible given human input.
- State the final verdict clearly:
Proceed as-is— no material concernsProceed with modifications— list specific modifications requiredRedesign required— list blocking concerns that must be addressed first
- Produce action items with owners (persona domain or "human").
Phase 7 — Record (writes files)
- Invoke
aidlc-trackingformats.md for exact template. - Append full council session →
docs/design-review.md - Append one-liner →
tasks/tracker.md:
`` ## YYYY-MM-DD HH:MM:SS — Design review: **Type:** task-complete **Outcome:** . personas. blockers. Key finding: . **Files changed:** docs/design-review.md ``
Token budget guidelines
- Phase 1 subagent output: ~200 words (Haiku, fast)
- Phase 3 persona outputs: ~300 words each (Haiku or Sonnet per persona file)
- Phase 4 debate: in-context, keep each persona response to 3-4 sentences
- Total target: council fits within parent context window; typical session ~8-15k tokens
- If complexity is
simple, Phase 4 debate can be abbreviated — personas may agree quickly
Persona library
Standard personas are in standard-personas/ — load only the files selected in Phase 2. User-defined personas are in user-generated-personas/ — same loading rule.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: indranildchandra
- Source: indranildchandra/claude-local-starter
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.