Skip to content
cccskills
FreePublished on GitHub

spec-fixture

Author a completed-spec fixture — a seeded intent graph plus a believable four-phase interview transcript — for a brunch feature, so it can feed any downstream tooling that consumes a completed spec or dogfood the UI. Use when you need a real completed specification in .brunch/brunch.db for testing or demo: pick a feature from memory/SPEC.md (or a free description), choose a stress profile (coverage|clean), and produce a registered scenario seed + an interview-questions doc that match exactly.

The English summary is being prepared. Showing the original description.

See how to install

Files included (2)

  • SKILL.md8.3 KB
  • references/seed-pattern.md9.6 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Spec Fixture

Turn one brunch feature into a completed-spec fixture: a seeded intent graph (requirements, criteria, supporting knowledge, typed edges) with all four interview phases closed, plus a believable interview transcript. The fixture is a real specification row in .brunch/brunch.db, usable as input to any downstream tooling that consumes a completed spec, or for dogfooding the workspace UI.

Input

$ARGUMENTS = a feature + optional profile.

  • Feature: a memory/SPEC.md capability-requirement number (e.g. "req 34–36") or a free-form description.
  • Profile: coverage (default — maximize graph coverage / stress downstream consumers) or clean (tidy demo fixture). Either way, always produce a believable transcript.

Use when

  • You need a real completed spec to exercise downstream tooling that consumes one (plan generation, the orchestrator) end-to-end.
  • You want a self-referential demo spec (brunch speccing a brunch feature).
  • You want to dogfood the interview/graph UI against realistic data.

Not for: editing the product schema, building the downstream tooling itself, or one-off throwaway graphs that don't need to persist.

Why this works (read before designing)

  • Downstream tooling reads the graph snapshot, not the transcript. It consumes knowledge_item + knowledge_edge; turn prose is irrelevant to it. So graph fidelity is for the consumer; the transcript is for the UI/demo. Get the graph exactly right; make the transcript believable.
  • Execution order is not spec truth. The observer captures epistemic deps (assumptions/decisions/constraints point at requirements), never req→req execution order. Any downstream ordering is synthesized from requirement content. So a faithful fixture seeds zero req→req depends_on and lets the content imply the order.
  • Two unrelated "impact"s. Turn impact (high|medium|low, read from turn.impact, defaults to low) is the interviewer's consequence hint. The edit-impact tier (none|soft|hard) is a separate edit-time cascade signal. This skill sets the turn impact; it does not touch the cascade tier.

Method

Defining the content (optional ln-* aids)

The fixture is an elicitation artifact, so the repo's ln-* elicitation skills can shape its content during steps 1–3. Use each skill's output to populate the fixture graph — do not let them write memory/SPEC.md / PLAN.md, which are dev-layer planning, not this product-layer fixture data.

  • ln-grill — pressure-test the feature into goals, constraints, and a thorough requirement set (the grounding/design content + supporting nodes).
  • ln-disambiguate — turn vague criteria into concrete behavioral acceptance criteria (sharper criterion nodes).
  • ln-oracles — design which criteria verify which requirements (the verifies edges) and the "expected downstream behavior" assertions.
  • ln-scope — frame each buildable requirement as a slice with target behavior and acceptance criteria, mirroring requirement → verifies → criterion.

1. Frame the feature

Name it snake_case. Decide mode (greenfield | brownfield) and delivery posture (incremental feature | end-to-end build). Brownfield + incremental is typical for a feature on existing code, and routes cook output to <dir>/.brunch/cook/plan.yaml.

2. Design the intent graph

Enumerate nodes and edges before writing code. Nodes: requirement and criterion (the buildable spine) plus supporting goal / term / context / constraint / decision / assumption. Edges are typed and must satisfy the relationship policy — see references/seed-pattern.md for the canonical direction table and the guard.

Apply the profile:

  • coverage — bake in deliberate stressors so a downstream consumer's full behavior gets exercised (graph read, order synthesis, validation):
    • Full verifies coverage of every buildable requirement.
    • ≥1 criterion that verifies two requirements.
    • ≥1 requirement verified by multiple criteria.
    • ≥1 non-buildable, constraint-phrased requirement (typed requirement, phrased as a "must not" / invariant) with no verifies edge — reproduces the real data-quality case a validation pass must catch.
    • Zero req→req depends_on — force downstream ordering to be synthesized from content; make the content imply a clear order.
    • ≥1 adversarial epistemic edge (e.g. refines req→req, or assumption/decision/constraint → requirement) that a graph read must ignore for ordering.
  • clean — well-ordered, every buildable requirement verified, no non-buildables, no adversarial edges. Optimized for a smooth demo run.

3. Write the interview-questions doc

docs/fixtures/<name>-interview.md. It is the source-of-truth and the capture map for the seed. Include:

  • A "Fixture fidelity" note (transcript reproduced verbatim from the seed).
  • The four-phase transcript (grounding → design → requirements → criteria) as believable Q&A, each grounding/design question tagged with its impact.
  • The capture map: node inventory (ref, kind, content) + edge inventory (canonical for the seed).
  • Expected downstream behavior: assertions for how a consumer reads, orders, and validates the graph, so the end-to-end test has a target.

Assign impact by the rubric "how much the answer shapes downstream choices" (src/server/prompts/interviewer-grounding.md): strategic forks, the core goal, and binding constraints are high; localized design choices are medium; assumptions-to-validate are low. Don't make everything high — the spread is the signal.

4. Author the seed

Put seedAccepted<Feature>Spec(db, projectId) in its own file src/server/fixtures/scenarios/<name>.ts (one fixture per file — keeps the scenarios.ts registry lean), then import it into src/server/fixtures/scenarios.ts and register a <name>-all-phases-closed scenario there. Mirror any existing all-phases-closed scenario seed. The seed must: build real grounding/design Q&A turns (set turn-level impact), capture each supporting item at the turn that elicits it, accept the requirements + criteria reviews, confirm all four phase outcomes, then add the policy-guarded edges. Full code skeleton and the relation-policy table: references/seed-pattern.md.

5. Load + verify

  • npm run fix then npm run check — must be green.
  • Verify the graph against a fresh in-memory DB (counts by kind, edges by relation, four phases confirmed, and the profile's stressors). Use the verification script template in the reference file; delete it after.
  • Load into the real DB. Re-seeding is additive, so to avoid duplicate specs, delete-then-reseed (FK-off across spec-scoped tables — snippet in the reference) before npm run seed -- <name>-all-phases-closed.

6. Reconcile

The doc transcript must match the seed verbatim — questions, answers, impacts, and captures. If you simplify the seed (e.g. plain Q&A instead of preface cards), update the doc to match, and vice versa. Note any folding (e.g. edge-styling intent folded into a requirement) in the doc's fidelity note.

Verification checklist

  • npm run check green.
  • In-memory seed asserts expected node/edge counts and the profile's stressors.
  • All four phase outcomes confirmed.
  • Every buildable requirement has ≥1 verifies; non-buildables have none.
  • Every edge passes supportsKnowledgeRelationship.
  • Doc transcript matches the seeded turns verbatim (incl. per-turn impact).
  • Real DB has exactly one spec for this feature (no stale duplicates).

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Build AI chat interfaces using ai-elements components — conversations, messages, tool displays, prompt inputs, and more. Use when the user wants to build a chatbot, AI assistant UI, or any AI-powered chat interface.

The English summary is being prepared. Showing the original description.

hashintel/brunch8Updated Oct 17, 2026

Search the live web via Perplexity Search API. Use when you need current documentation, release notes, vendor pages, news, domain-constrained web search, or date/recency filtering. Not for local codebase search or stable docs already in context.

The English summary is being prepared. Showing the original description.

hashintel/brunch8Updated Oct 17, 2026

Chrome DevTools CLI for browser automation via shell commands. Use when interacting with web pages from the command line — navigating, clicking, filling forms, inspecting console/network, taking screenshots, or extracting page content. Triggers on: browse a page, automate Chrome, inspect console, check network requests, take a screenshot, fill a form, click a button.

The English summary is being prepared. Showing the original description.

hashintel/brunch8Updated Oct 17, 2026

Uses the chrome-devtools-axi CLI for browser automation, accessibility-tree snapshots, console and network inspection, screenshots, Lighthouse audits, and performance traces. Use when interacting with Chrome from the shell, especially when the user mentions chrome-devtools-axi, AX snapshots, browser debugging, or DevTools automation from the command line.

The English summary is being prepared. Showing the original description.

hashintel/brunch8Updated Oct 17, 2026

Deep expertise in cmux — the terminal multiplexer with native browser views. Use when managing panes, reading terminal output, sending keystrokes, opening browser views, or manually testing web UIs and TUIs inside cmux. Triggers on: cmux, open a browser pane, split terminal, read screen, send keys, test this UI in cmux, preview in cmux.

The English summary is being prepared. Showing the original description.

hashintel/brunch8Updated Oct 17, 2026

Uses the gh-axi CLI for GitHub shell operations: issue, pull request, workflow run, release, repo, search, and API tasks. Prefer this over regular `gh` for GitHub reads and simple mutations when an agent needs compact, structured, suggestion-rich output. Triggers on: gh, GitHub CLI, github issue, github pr, pull request, workflow run, github release, gh api, repo inspection, list PRs, view issue, check workflow runs, inspect repo, GitHub shell operations.

The English summary is being prepared. Showing the original description.

hashintel/brunch8Updated Oct 17, 2026

See all skills by hashintel

Report a problem with this skill