Skip to content

Skills Architecture

The author's own map of the AI skills behind this site: how they fit together, who owns what, how work passes between them, and what stays with the author. Three families share one repository:

  • Wiki management (the wild-brewer plugin, run in the Wiki project): capture, intake, media, publish, restructure, rules, health, positioning and release. Private: not released.
  • The ingredient suite (run in the Ingredient Studio project): the ingredient-studio router and its specialists, which do the brewing work and are released for download under Skills › Ingredients Studio, plus the ingredient-suite maintainer skill, which checks, documents and packages them and is not released.
  • Culture skills (the Cultures Studio; installed at account level, so usable in either project): bottle-dregs-analysis, which plans the isolation of bugs from a bottle's dregs against the Isolation Capability Matrix, critiques the plan as the work proceeds, seeds the culture journey and finally merges the plan into it. A standalone skill, released for download under Skills › Cultures Studio.

The wiki and ingredient families never edit each other's files. They meet at two drop zones in inbox/, and the author approves, pastes and commits everything in between.

Architecture

The diagram is wider than the page: scroll sideways to follow it.

%%{init: {"flowchart": {"nodeSpacing": 45, "rankSpacing": 70, "padding": 12}, "themeVariables": {"fontSize": "16px"}}}%%
%% wb:fit 1.8
flowchart LR
    A(["Author"])
    subgraph IS["Ingredient Studio project"]
        R["ingredient-studio<br/>router"] --> ADV["advisory specialist<br/>sensory"]
        R --> SP["process specialists<br/>maillard, treatments"]
        ADV -. "forms, partners" .-> SP
        M["ingredient-suite<br/>maintainer"]
        SK[("skills/")]
        SU[("suite/")]
    end
    subgraph HO["Hand-over: inbox/"]
        IR[("raw/<br/>documents")]
        IREL[("releases/<br/>bundles")]
    end
    subgraph WP["Wiki project"]
        CAP["wiki-capture<br/>wiki-media"]
        INT["wiki-intake"]
        REL["wiki-release-skill"]
        PUB["wiki-publish"]
        GOV["wiki-rules, restructure,<br/>health, positioning"]
    end
    DOC[("docs/ + rules")]
    CF["Cloudflare<br/>live site"]
    subgraph CSG["Cultures Studio (account skill, either project)"]
        BD["bottle-dregs-analysis"]
        WK[("work/<br/>isolation-plans/")]
    end

    A -- "request, go" --> R
    SP -- "design .md<br/>(via designs/)" --> IR
    ADV -- "analysis page .md<br/>(via designs/analysis/)" --> IR
    M -. "checks" .-> SK
    M -. "guide sources" .-> SU
    M -- "suite:release" --> IREL
    A -- "notes, photos" --> CAP
    IR --> INT
    IREL --> REL
    CAP --> PUB
    INT --> PUB
    REL --> PUB
    PUB -- "pages" --> DOC
    GOV -- "rules, moves" --> DOC
    PUB -- "change set" --> A
    A -- "commit, push" --> CF
    A -- "bottle, micrographs,<br/>progress" --> BD
    DOC -. "matrix, procedure,<br/>journey log" .-> BD
    BD -- "plans, critiques,<br/>merge drafts" --> WK
    BD -- "journey seed,<br/>plan and outcome" --> CAP

The router runs two kinds of specialist. Process specialists (Maillard, Treatments) own preparations: designs, doses, process verdicts and batch-log blocks. The advisory specialist (Sensory) owns what an ingredient brings to a living beer, its precedent and its pairings: it runs first, frames the work, carries hazards to their owners and writes no batch-log block. In route R2 the router composes one ingredient analysis page from the sensory, chemistry and treatments sections.

Read it left to right: ideas and requests enter through the router, the capture skills or bottle-dregs-analysis; finished material crosses into the wiki only through inbox/raw/ (documents), inbox/releases/ (skill releases) or wiki-capture (journeys); only wiki-publish writes the final pages; only the author commits and pushes.

bottle-dregs-analysis reads the wiki (the matrix, the isolation procedure, the journey log) but never writes docs/: its plans are committed working files in work/, and anything bound for a journey page goes through wiki-capture.

Who owns what

Area Owner Others may Gate
skills/ (router, specialists) Ingredient Studio project Wiki: read only suite_check.py
skills/bottle-dregs-analysis/ Author, from either project (a CHANGELOG-vN.md per version) Wiki: copies it to skills-src/ to release read in full before each release
skills-src/ (scrubbed copies of standalone skills) Wiki project (wiki-release-skill Path B) wb.py package-skill privacy patterns, plus a read-through
work/isolation-plans/ (plans, critiques, merge drafts) bottle-dregs-analysis; committed, never published; old plans change only in frontmatter (status, journey) Wiki: read the merge draft the plan's gates, checked by Critique
docs/cultures/isolation-capability-matrix.md Author (Status and Held; a procedure's values follow from its Needs; IDs never reused) bottle-dregs-analysis reads it when it writes a plan wb.py check
suite/ (guide sources, scrub rules, golden outputs, scripts) Ingredient Studio project (ingredient-suite) nobody else suite_check.py --full
Shared records: registry.yaml, specialists.yaml, batch-log.md, each specialist's data/ Author (skills emit blocks, the author pastes) skills read registry_check.py, specialists_check.py
designs/ (design archive) Ingredient specialists write; designs are never edited afterwards Wiki: read the copy in inbox/raw/ the specialist's calculator
designs/analysis/ (ingredient analysis pages) Ingredient Studio (R2, sensory:3/sensory:4); one page per ingredient family, updated in place (page_version and a changelog row); each hand-over copy is a new file (-v2, -v3) Wiki: read the copy in inbox/raw/ sensory_calc.py; the sources on the page
inbox/raw/ Written once by whoever hands over (the author, or the studio on "send to the wiki") Wiki: read only wiki-intake fidelity diff
inbox/releases/<bundle>/ Written once by suite:release Wiki: read, verify, apply; never edit wb.py release-verify
docs/ pages Wiki project, through wiki-publish the ingredient guides are generated pages: body and title fields come from suite/docs/; a hand edit fails validate wb.py check
docs/technical/skills/ (Skills: Ingredients Studio, Cultures Studio) Wiki project; the Ingredients Studio guides are generated pages (Path A), the Cultures Studio guides are wiki pages written at release (Path B) wb.py check
docs/skills/downloads/ (zips only; /skills/ redirects to Skills) Wiki project (zips copied from a verified bundle or packaged by Path B, never overwritten) release-verify, package-skill
WIKI.md, wiki.config.yaml, templates, tools/wb.py wiki-rules every wiki skill reads them first wiki-rules impact analysis
plugin/ (wiki skill source) Author, via the plugin customiser reinstall after a change
git: commit, push, deploy Author only skills use git --no-optional-locks status/diff/log Cloudflare build

Hand-over points

From To Through Rule
Ingredient specialist Wiki "send to the wiki": the design .md copied into inbox/raw/ (never the .json) wiki-intake keeps the substance, proves it with a fidelity diff, and hands to wiki-publish
Ingredient Studio (R2) Wiki "send to the wiki": the analysis page copied into inbox/raw/ wiki-intake publishes it in Ingredient Analysis; a later version replaces the page at the same URL (rules 0.17.0)
ingredient-suite Wiki suite:release: a bundle in inbox/releases/ (manifest, deterministic zips, guide bodies) wiki-release-skill Path A verifies and applies it with no content edits; the bundle is never edited
Wiki Ingredient suite the hand-back list: positioning proposals, link rewrites from a restructure, or a hand edit found on a generated page fixed in suite/docs/, then a docs-only bundle
Wiki (after the commit) Ingredient suite suite:released <bundle> sets released: in the register and re-renders the tables
bottle-dregs-analysis (Mode 3) Wiki a journey seed handed to wiki-capture capture allocates the ID with wb.py; the plan gets journey:, the journey gets plan: (a slug, not a link)
Author Wiki progress told to wiki-capture, citing plan steps log headings carry them, e.g. (P03, P04); Critique reads them back
bottle-dregs-analysis (Mode 4) Wiki work/isolation-plans/<slug>/merge-<date>.md handed to wiki-capture becomes the journey's ## Plan and outcome section when it is banked or closed; the plan is marked merged
Any skill Author a change set, the blocks to paste, a suggested commit message nothing reaches git without the author

Roles and responsibilities

Activity Ingredient skills ingredient-suite Wiki skills Author
Ingredient design, critique, analysis page (R2), debrief does (router proposes; sensory frames, the process specialist builds) approves the route; cooks; tastes
Registry, register, batch log, data/ updates emit the block pastes, runs the checker
Change or add a skill does (lifecycle checklist, checks, changelog) asks, approves
Skill guide text owns (suite/docs/) publish it unchanged reviews
Release builds the bundle verify, apply, publish says "go", commits, then suite:released
Notes, photos, journeys, tastings capture, media, publish supplies material
Isolation plan, critique, journey seed, merge (bottle-dregs-analysis) capture turns the seed and merge into the journey; Path B releases the skill opens the bottle, feeds progress, keeps the matrix current, decides to proceed
Finished documents intake, publish drops them in inbox/raw/
Site rules and structure rules, restructure decides
Health and findability health, positioning acts on the external checklist
Deleting anything never never never only the author (inbox/attic/ is the holding area)

The author's responsibilities

  1. Approve before work starts. The router and the maintainer propose and wait for "go"; the Opus-level wiki skills ask before continuing on a smaller model.
  2. Own the shared records. Paste the blocks the skills emit, then run the checker they name.
  3. Trigger the hand-overs. "send to the wiki", suite:release, "release the bundle", then suite:released once committed.
  4. Review, commit and push. Every change set arrives with a commit message; nothing reaches git or the live site otherwise.
  5. Keep the tools current. Reinstall the wild-brewer plugin after its source changes, and re-upload bottle-dregs-analysis as an account skill after each release; connect the repo root in each project.
  6. Keep the matrix current. Set Status and Held when kit arrives or runs out; ask for a matrix review when a live plan should take the change into account.
  7. Choose the session model (below) and start one job per session.
  8. Empty inbox/attic/ when happy: superseded files and bundles wait there because no skill deletes.
  9. Keep personal details out of anything bound for docs/ or a zip. The privacy patterns and the scrub rules catch known ones; the author is the last check.

Guardrails every skill shares

  • The rules files are read first and win over any skill.
  • git is read-only; nothing is deleted; inbox/raw/ and inbox/releases/ are never edited.
  • Deterministic gates decide, not the model: wb.py check, wb.py release-verify, the intake fidelity diff, suite_check.py --full, and the privacy patterns (the suite's list is a superset of the wiki's, and the check says so if not).
  • A generated page is changed only at its source; the wiki hands changes back rather than editing.

Wiki skills at a glance

Skill Use it for Say something like Hands over to
wiki-capture Raw notes, photos, measurements and ideas into drafts; dated log entries on living pages (journeys, isolates, experiments, prep-designs) "new bottle", "I plated…", "update the journey", "log this", "I tasted…", "write this up" wiki-media (photos), wiki-publish
wiki-intake A finished Markdown document (protocol, primer, prep design, skill user guide) made to fit the wiki without changing its substance; fidelity diff and review notes; new versions of published documents "intake this", "publish this document", "add my protocol/primer/design" wiki-publish
wiki-media Photos and short clips: backs up originals with checksums, strips EXIF/GPS, resizes to WebP, H.264 video with poster; ready-to-paste Markdown; CSV data for tables and charts "condition these photos", "add these plate/microscope shots", "upload this video" the page that embeds them
wiki-publish The single route onto the site: places a draft, assigns the ID, cross-links, regenerates nav and indexes, runs the strict check, gives a commit message "publish this", "put it on the wiki", "add this to the site" you (review, commit, push)
wiki-release-skill Shares AI skills for download. A release bundle (the ingredient skills) is verified and applied as it comes: zips plus generated guide pages. A standalone skill is copied to skills-src, scrubbed, versioned, zipped under CC0 and given a page "release the bundle", "publish my skill", "release a new version of the skill" wiki-publish
wiki-restructure New sections or topics, splits, merges, renames and moves, with redirects so old URLs keep working "add a new chapter", "reorganise", "move these pages", "rename the section" wiki-publish (checks)
wiki-rules Changes to the house rules (WIKI.md, wiki.config.yaml): sections, page types, fields, vocabularies, ID prefixes, media presets, validation; impact analysis, migration, changelog "from now on…", "add a stage/status/field", "change the rules" wiki-restructure / wiki-publish if pages move
wiki-positioning Search-positioning audit that keeps the notebook voice: templates, sitemap, structured data, changed pages only (ledger), approved title, summary and link edits, Search Console import, external checklist. Proposals for generated pages go back upstream "SEO audit", "how findable is the site", "here is the Search Console export" wiki-rules (template levers), you (external tasks)
wiki-health Health check: strict build, rule validation, broken links, orphans, unused media, oversized files, privacy leaks, stale drafts and journeys, live site vs local build, unapplied release bundles, hand-edited generated pages "check the wiki", "health check", "what's stale", "what needs attention" fixes via the relevant skill

Culture skills at a glance

Skill Use it for Say something like Hands over to
bottle-dregs-analysis Mode 1: research the beer, read the dregs micrographs, write an isolation plan against the matrix.
Mode 2: critique the plan against changes, progress or a changed matrix; updated plan on request.
Mode 3: seed the journey from the adopted plan.
Mode 4: merge the plan and its outcome into the journey
"I'm opening a bottle of…", "here are the dregs",
"I plated, here is what I see: critique the plan", "review the plan against the new matrix",
"let's go: start the journey",
"the journey is banked: merge the plan"
wiki-capture (seed, progress, merge), then wiki-publish

Typical flows

  • New bottle or plating round: wiki-capture → wiki-media → wiki-publish.
  • Bottle with an isolation plan: bottle-dregs-analysis Mode 1 (plan v1) → Mode 2 as needed (critiques, plan v2 …) → Mode 3 when you proceed (wiki-capture → wiki-publish) → progress through wiki-capture, citing plan steps → Mode 2 against the journey log → Mode 4 when banked or closed (wiki-capture → wiki-publish).
  • Finished write-up: drop it in inbox/raw/ → wiki-intake → wiki-publish.
  • Ingredient design to the wiki: router (proposal, "go") → specialist design in designs/ → "send to the wiki" → wiki-intake → wiki-publish.
  • Ingredient analysis to the wiki: sensory:1 (scope) → R2 on the brief → designs/analysis/<id>.md → "send to the wiki" → wiki-intake (a new version keeps the URL) → wiki-publish.
  • Skill change: suite:change or an edit in skills/ → suite:check → suite:docs when the guide is affected. Release later.
  • Skill release: suite:check --full → suite:release → wiki-release-skill (Path A) → wiki-publish → commit → suite:released.
  • Guide fix only: edit suite/docs/ → suite:release --docs-only → Path A.
  • Standalone skill (not in the suite, e.g. bottle-dregs-analysis): change it in skills/ with a changelog → wiki-release-skill (Path B: copy to skills-src/, scrub, zip) → wiki-publish → commit → re-upload the account skill.
  • Section getting crowded: wiki-health → wiki-restructure (generated pages it touches go on the hand-back list).
  • Changing how things are done: wiki-rules, then wiki-health.

Choosing the model

Model and effort matter most for the skills that change many pages or publish something that cannot be recalled. The table reflects the Claude line-up in September 2026.

Skill Default Step up or down when Risk
wiki-capture Sonnet 5, medium effort Opus 5 for messy notes, many photos, or updates across several pages Invented facts when notes are sparse
wiki-media Sonnet 5, low Haiku 4.5 if you supply the captions Poor alt text for plate and microscope shots
wiki-publish Sonnet 5, medium Opus 5 if the draft needs a new section Low: wb.py check gates it
wiki-health Sonnet 5, medium Haiku 4.5 for a scheduled, report-only run Missed privacy leaks on a small model
wiki-positioning Sonnet 5, medium Opus 5 for a first full audit or a large Search Console review Voice drift in titles and summaries
wiki-intake Opus 5, high Sonnet 5 for a new version with a small diff Weak technical review of protocols and primers
wiki-release-skill Opus 5, high (Path B) Sonnet 5 for Path A bundles and version bumps A personal detail left in a public zip (Path B); Path A is gated by release-verify
wiki-rules Opus 5, high Fable 5.1 for a breaking schema change Migration errors across many pages
wiki-restructure Opus 5, high Fable 5.1 for a large reorganisation Broken links and redirects

The four Opus skills check which model is running and ask before continuing on a smaller one.

On the ingredient side the same logic applies: the router and the specialists do chemistry and safety reasoning, so run designs, critiques and debriefs on Opus 5 at high effort, and the sensory scope and profile too (research breadth and evidence grading); the ingredient-suite maintainer's checks and builds are deterministic scripts, so Sonnet 5 is enough unless a skill change itself needs chemistry judgement. bottle-dregs-analysis reads micrographs, researches the beer and weighs route trade-offs: run Modes 1 and 2 on Opus 5 at high effort; Modes 3 and 4 only transcribe from the plan and the journey, so Sonnet 5 is enough.

Hints

  • Choose the model when you start the session. Skill frontmatter sets a model too, but it only takes effect when you type the skill as /wiki-…; when Claude picks the skill from your wording, the session model runs.
  • Chains run on one model. capture → media → publish uses the session model throughout, so pick for the hardest step.
  • One job per session. A fresh session for each bottle, document or restructure beats one long mixed session.
  • Give it everything up front: the journey or page ID, dated notes, labelled photos, and what you want out.
  • Ask for a dry run first on anything that touches many pages: "/wiki-restructure Split technical into maillard and acids topics. Dry run only: show the target tree, move table, link rewrites and rules changes, and apply nothing." wiki-rules works the same way ("impact analysis only").
  • Trust the gates, not the model. wb.py check, the intake fidelity diff and the privacy patterns catch mistakes whichever model ran.

Under the bonnet: tools/wb.py

Command Does
config Summary of the rules (JSON)
pages Published pages and their frontmatter
next-id PREFIX / next-isolate PARENT Next free ID (BUG, EXP, ING, PRT)
new TYPE Template into inbox/drafts/
media SRC... Condition media, back up originals
fidelity ORIGINAL NEW What an intake changed in the prose
package-skill DIR CC0 zip into docs/skills/downloads/ (Path B)
release-verify BUNDLE / release-apply BUNDLE Check a release bundle; apply it (zips plus generated pages) (Path A)
seo / seo-stamp / seo-decline / seo-gsc Search-positioning facts, ledger and Search Console import
move OLD NEW / redirect OLD NEW Move pages with redirects
nav / index Regenerate navigation and wb:auto blocks
validate / build / check Rules, strict build, and the pre-publish gate

And suite/scripts/ (ingredient suite, not shipped)

Script Does
suite_check.py [--full] Register, registry, versions and changelogs, calculators against golden output, references, boundary notes, eval directives; --full adds guides, links, wiki drift, the hash contract and a scrub dry run
suite_docs.py render / status Re-render the specialist tables in the guide source; each guide against its wiki page
suite_release.py [--dry-run] Build a release bundle into inbox/releases/; --mark-released after the wiki commit

Local preview on Windows: .venv\Scripts\zensical serve, then open http://localhost:8000.