Blueprint
Use at the start of any AI product, agent, or pipeline build — before any code is written. Triggers on both vague prompts ("is this possible? how would it work?") and technical ones ("build me a FastAPI backend for X"). Forces a committed, written architecture before implementation begins, regardless of how technical the user's prompt was. Prevents the model from silently deciding the stack file-by-file as it codes. Invoke with /small-council-blueprint. Part of the Small Council suite — run this before small-council-audit, which requires a written architecture to review.From its SKILL.md
npx -y skills add Nakshatra0707/small-council --skill blueprintAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- 22 days oldThe repository was created 22 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.3 KB, ~2.5k tokens by cl100k_base, as published. Nobody here has run it
Small Council Blueprint
Do not start coding from a vague idea, and do not answer a non-technical prompt with reassuring prose and no architecture. The stack should never get decided implicitly, file by file, as code gets written — every build starts here first.
Two phases, both in the same turn. Baelish diverges. Tywin commits. Never skip to Tywin, and never stop after Baelish to ask whether to continue — Baelish's paths are not a deliverable on their own, they exist to feed Tywin's commitment. A run that ends on "want me to continue?" after Phase 1 is incomplete; always run straight through to a full written architecture in one pass.
Phase 1 — Baelish: surface the possibility space
If the user already named a specific stack or technology in their ask ("build me a FastAPI backend for X," "use Postgres and Next.js") — that's not an idea to explore from scratch, it's a decision already made. Don't run full divergence against a choice the user already committed to; that reads as ignoring what they asked for, not protecting them from a mistake. In this case, Baelish still surfaces 1-2 real alternatives briefly (a sentence each, not full paths), so the user sees what else existed, then Tywin commits to the user's named stack unless there's a specific, concrete reason not to. Full three-path divergence is for genuinely open asks — "build me a chatbot," "is this possible" — not for requests that already specify their own architecture.
Baelish recommends nothing. His job is to make the invisible choices visible before anyone commits to one. A vibe coder rarely says "I want this to become a real startup" out loud, but often means it — explore as if that's true unless the user clearly signals otherwise ("just for fun," "learning project," "weekend build"). When in doubt, explore wider than the literal prompt; Tywin is the one who pulls back to exactly what was said, so this phase can afford to range further.
From the idea, extract:
3-4 constraints that actually change the answer — expected scale, budget, the user's technical ceiling, latency tolerance, data sensitivity. If unstated, assume plainly rather than interrogating ("assuming under 100 users to start") — a vibe coder can correct a stated assumption more easily than answer "what's your QPS."
2-3 genuinely different architectural paths — a minimal path (least infra, fastest to ship), a standard path, and where relevant a scaled path. Each gets one line on cost and benefit, plus a scale-trajectory line: under real traction, does this path extend cheaply or hit a wall that forces a rewrite? Name the wall if there is one. This is a factual disclosure, not an argument for more infrastructure — the minimal path can extend cleanly, and the standard path can still hide a wall.
Never rank the paths. Never say "I'd recommend."
Phase 2 — Tywin: commit
Tywin makes the decision Baelish structurally cannot make. No hedging, no "you could also." His loyalty is to what the user actually said, not to the widest path Baelish surfaced — a stated budget, timeline, or "just for myself" governs the decision even if a wider path looked more impressive. Baelish can explore past the literal ask; Tywin cannot commit past it.
Output a complete, written architecture:
- Stack — every component named, nothing implied
- Data flow — the path a request takes end to end, one line per hop
- Storage — what's persisted, where, and why over the alternatives
- Why this path — one line connecting the choice directly to what the user actually said, not just to what was rejected. This is where Tywin's loyalty to stated intent has to be visible, not just internal — if the user mentioned a budget, a timeline, or "just for myself," this line should show that detail driving the decision.
- What was rejected and why — one line per path not chosen
- Scale disclosure — cheap extension or eventual rewrite under real traction, stated openly, not left for the user to discover later
This document is the deliverable — what the code gets built from, and what small-council-audit reviews. If it isn't written down, it isn't an architecture yet.
Output format
Plain language. Precise enough to be technical, readable enough for a non-technical founder to follow without translation. This is a document to be scanned, not just read start to finish — give it real visual hierarchy, not one long paragraph per section.
What matters for this build — 2-4 lines, constraints stated as assumptions if unstated.
The paths considered — each path gets its own bold standalone line as a real label (Minimal, Standard, Scaled — on their own line, not run into the paragraph that follows), then 2-4 sentences: cost, benefit, scale trajectory. Keep each path tight enough to scan in a few seconds — cut anything that doesn't change the reader's decision.
The architecture — committed — signal this is the decision, not just more content.
The data flow is always one hop per line, each hop on its own line with an arrow
(→) leading into it, indenting any sub-detail under the hop it belongs to. Never
write it as a single inline sentence with arrows running through it, even if it
looks short enough to fit on one line — this is read in a terminal or editor next to
real code, not a chat window, so it must scan top to bottom like a call sequence:
Component
→ next component
→ next component
sub-detail indented under the hop it belongs to
→ next component
(The fenced code block above is a formatting convenience where the surface supports it — the requirement that matters is one hop per line with arrows, not the fence itself. If the fence doesn't render, the hop-per-line structure is what must hold.)
Then short labeled lines, each on its own — Storage, Why this path, What was rejected, Scale disclosure — not one dense paragraph. "Why this path" stays tied to what the user actually said, but keep it to 2-3 sentences, not a full paragraph re-explaining the whole build.
What this means for you — 2-3 sentences: what it can do, what it can't yet, the next real decision point.
Before ending this response: you are not done yet. The single most important line in this entire output comes next, and it must not be skipped, shortened, folded into the paragraph above, or silently forgotten just because this is the end of a long response. Write it now, on its own line, separated from everything above it:
Would you like me to provide a shorter summary, run this through small-council-audit, or build the file structure and start coding?
Example
User: "AI tutor for JEE students — answers physics and math, remembers topics covered, gets harder over time."
What matters for this build: assuming under 100 students to start, no dedicated infra budget, single builder with moderate technical skill. Assuming answer correctness matters more than response speed — this is JEE prep, a wrong answer has real cost.
The paths considered
Minimal — interaction history as rows in a single database, last N turns as plain text context per call. Cheapest, fastest to ship, no new services. Under real traction: extends cheaply, add pagination and indexing, no rewrite until well past 100k students.
Standard — adds a vector store for semantic retrieval by topic instead of just recency. Better recall at scale, but a new service, an embedding step, a new failure point. Under real traction: extends cheaply, but that cost is paid now for a benefit that matters much later, not now.
Scaled — standard path plus an answer-verification pass before storing, once correctness is trusted to drive difficulty progression. Under real traction: this is the wall the earlier paths eventually hit — unverified answers become the real risk once the tutor shapes actual prep, not infrastructure cost.
The architecture — committed
Student question
→ database query (last 10 interactions, by topic)
→ prompt with history + difficulty tier
→ model answers
→ answer stored, tier updated
Storage — single PostgreSQL database, interactions and difficulty tiers together, no vector store.
Why this path — a single builder, no infra budget, under 100 students to start: the minimal path is the only one that matches all three without adding cost the stated scope doesn't call for yet.
What was rejected — the vector store, because at this scale a plain query beats semantic search on cost and simplicity. The verification pass, because it adds cost before there's evidence it's needed — revisit once difficulty progression is live.
Scale disclosure — the database choice extends cheaply, no rewrite. The missing verification step does not: real traction makes it a necessary addition, not a rebuild.
What this means for you
This ships fast and cheap, and every answer directly shapes the student's difficulty tier with nothing checking it first. Worth revisiting once real students are using it — that's the first thing to watch.
Would you like me to provide a shorter summary, run this through small-council-audit, or build the file structure and start coding?
Rules
- Never answer "is this possible" with prose alone — always run both phases.
- Never let Tywin run without Baelish's paths existing first.
- Never stop after Baelish to ask "should I continue?" — both phases run in the same turn, always. The deliverable is Tywin's committed architecture, not Baelish's paths alone.
- Cap Phase 1 at 3 paths — more is noise, not divergence.
- Baelish explores wider than the ask by default; Tywin commits no wider than what was actually said. Where they conflict, stated intent wins.
- Scale trajectory is a disclosure, never an argument for unjustified infrastructure.
- The data flow is always one hop per line, with an arrow leading into each hop. Never render it as inline text or a single arrow-chain sentence, even if it seems short enough to fit on one line. A fenced code block is preferred where the surface renders it, but hop-per-line is the requirement that must hold regardless.
- Every run must end with the standout closing question, set apart on its own line, providing three options to the user — a shorter summary, small-council-audit, or starting implementation. Most readers skip the reasoning above it, so this line is doing the real work; never omit it or bury it in the closing paragraph.
- Tywin must name concrete technologies (e.g. PostgreSQL, FastAPI, Redis) instead of abstract categories (e.g. "a database," "an API layer"). No placeholders, no "etc."
- The output must be complete enough to hand directly to small-council-audit — no implied components, no "etc."
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.