bama
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.
翻譯準備中
Cheese your code 🧀 — high-quality results as easy as cheese. A portable, harness-agnostic Agent Skills toolkit.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Don't know what to do? Just /cheese it.
A portable, harness-agnostic Agent Skills toolkit for any Agent Skills-compatible harness. Each skill uses SKILL.md as its instruction surface. Python-backed skills also ship a self-contained runtime archive. The toolkit requires no custom agents or repo-wide MCP server. The vocabulary (mold, culture, cook, press, age, cure) describes a workflow that you can use in whole or in part.檢視完整 README ↗Don't know what to do? Just /cheese it.
"The cheese must flow."
A portable, harness-agnostic Agent Skills toolkit for any Agent Skills-compatible harness. Each skill uses SKILL.md as its instruction surface. Python-backed skills also ship a self-contained runtime archive. The toolkit requires no custom agents or repo-wide MCP server. The vocabulary (mold, culture, cook, press, age, cure) describes a workflow that you can use in whole or in part.
This repo follows the Agent Skills spec:
skills/
└── <skill-name>/
├── SKILL.md # required: name + description + body
├── references/ # optional: detail pulled in on demand
├── scripts/ # optional: same-named Python runtime archive
└── assets/ # optional: templates / static resources
Each SKILL.md is self-contained markdown with YAML frontmatter. There are no nested sub-skills; deeper material lives in references/<topic>.md so the harness can load it progressively.
Content shared across skills lives in the cheese skill's references/ directory (for example, skills/cheese/references/handoff-gate.md). Full installs include cheese. When you install one workflow skill, install cheese with it. Skills reference shared material by sibling-relative path (../cheese/references/<file>.md from a SKILL.md, ../../cheese/references/<file>.md from a references/*.md) so links resolve in both the repository and an installed skills directory.
A Python-backed skill ships exactly one executable archive at skills/<skill>/scripts/<skill>.pyz. Runtime source lives under src/easy_cheese/; Python source does not live under skills/. A skill that does not execute Python ships no archive.
| Skill path | Command | Purpose |
|---|---|---|
skills/cheese/SKILL.md | /cheese | Unified entry point. Classifies any input (idea, spec path, PR, stack trace, file path), announces the routing decision as a short three-line block (Intent / Reason / Target), and dispatches the chosen target immediately with --auto propagated downstream. Add --safe to gate dispatch behind a confirmation prompt and surface non-auto alternatives. |
skills/briesearch/SKILL.md | /briesearch | Research technical questions across docs, web, codebase, and GitHub examples with confidence-capped synthesis. |
skills/mold/SKILL.md | /mold | Shape fuzzy ideas into grounded specs through dialogue, validate cycles, and an agent coherence self-check plus save approval, with ceremony tiered to the size of the job (quick / light / full). |
skills/culture/SKILL.md | /culture | The agent's internal-thinking skill — invoked silently by /cheese and other workflow skills to model a problem before dispatching. Surfaces on three entry signals: "/culture", a no-write request ("no writes", "rubber-duck this"), or a request to think through a problem such as "these bugs feel connected". The prototype maps evidence across problem levels during ordinary conversation. Optional cues such as “zoom out” guide the discussion; no mode flag is required. Records the session's ideas, decisions, and info to the wiki (or tracked fallback files) and writes the .cheese/notes/<slug>.md handoff at session end; never code, specs, commits, or PRs. |
skills/pasteurize/SKILL.md | /pasteurize | Diagnose hard bugs, flaky failures, and performance regressions with a feedback-loop-first investigation, then hand off into /cook (⇄ /press) → /age → /cure. |
skills/cook/SKILL.md | /cook | Single implementation orchestrator: runs a focused spec through one coder or fans a file-disjoint curd block through fresh-context phase agents. |
skills/press/SKILL.md | /press | Attack cooked changes with one adversarial test pass. Cook runs it automatically; /press <slug> re-runs it by hand. |
skills/age/SKILL.md | /age |
Workflow skills call source-code backends directly rather than dispatching wrapper skills. The shared code-intelligence-routing.md contract defines capability selection and the mandatory search → fresh bounded read → stale-safe write sequence.
Dispatching skills resolve agent type, power, permissions, isolation, and fallback through the shared agent-resolution.md contract.
See Installing MCP servers below — expand the tilth section for the preferred broad source-code backend. If tilth is unavailable, use equivalent native AST/LSP/anchored-edit tooling when the harness provides it; otherwise name the weaker fallback instead of pretending blind shell tools have the same safety.
/cheese ──► classify intent ──► dispatch immediately (autonomous by default)
├─ need info / external evidence ──► /briesearch
├─ no-writes discussion only ──► /culture (user explicitly opted out of writes)
├─ fuzzy / multi-module idea ──► /mold ──► /cook --auto (⇄ press) ──► /age ──► /cure
├─ high-blast-radius spec ──► /mold ──► /cook --auto (fresh-context fan pathway)
├─ clear, scoped ask ──► /cook --auto (⇄ press) ──► /age ──► /cure
├─ "go prototype this idea" ──► /cook --prototype (plan → spike → check, repeat) ──► stabilize ──► /age ──► /cure
├─ debugging task ──► /pasteurize --auto ──► /cook --auto (⇄ press) ──► /age ──► /cure
├─ PR comments / CI failures ──► /affinage ──► /cure
├─ running low on context ──► /wheypoint ──► /cheese --continue <slug> (fresh session)
├─ resume in fresh context ──► /cheese --continue <slug>
└─ review only ──► /age ──► /cure
/cheese is the front door. It inspects whatever you drop in (idea, spec path,
PR ref, stack trace, file path), announces its routing decision as a short
three-line block (Intent / Reason / Target), and dispatches the chosen skill in
the same turn — --auto propagates
downstream so the chain runs all the way through. Use --safe when you want
the chance to redirect before anything runs: it puts the confirmation prompt
back in front of dispatch and surfaces non-auto variants as alternatives. Skip
/cheese entirely when you already know the destination — a hard bug can go
straight to /pasteurize, a known-scope fix can go to /cook, and an
explicit no-writes design discussion goes to /culture. /melt cuts in
whenever a merge step blocks /cook or /cure. Append --hard to any
pipeline step to insert /hard-cheese as a metacognitive vibecheck gate
before review.
Easy-cheese is intentionally a small surface. What that means in practice:
SKILL.md defines each capability, and Python-backed skills include one self-contained .pyz archive./cook is the single implementation orchestrator: focused specs use its single-coder path, while file-disjoint curds use its fresh-context fan pathway. /ultracook is only a compatibility redirect to /cook. Harvest and /plate remain parent-owned; parallel curds use sequential same-worktree phase spawns and a terminal reviewer pass before publication./cure. The skill describes the protocol; the human runs the next /age when ready.The artifact contracts the skills read and write — run manifests, decompositions, curd blocks, PR plans — are published as easy-cheese-schemas on PyPI, so external tooling can produce and consume easy-cheese documents without reimplementing their field rules.
pip install easy-cheese-schemas
For the stability policy, schema_version contract, and strictness tiers, see Easy-cheese schemas.
You need only Python 3.11 or newer to run a skill. Each Python-backed skill ships one self-contained executable archive at skills/<skill>/scripts/<skill>.pyz:
python3 skills/<skill>/scripts/<skill>.pyz <subcommand>
The default branch, dist, holds the published tree. On every merge to main, CI builds the archives and appends one dist commit with the full main tree plus those archives. An hourly run also catches dist up to the main tip. An install never mixes a new SKILL.md with an old archive. main tracks no archives. In a main checkout, build them before you run a skill:
just wedge-build
just wedge-build runs wedge at build time. It vendors src/, builds one reproducible archive per skill, and keeps archive metadata in wedge.toml. Each application's commands.py declares its public subcommands as an immutable tuple of Command(name, "module:callable") values. The archive resolves a selected target lazily and calls it with only that command's arguments.
just check and just ci build the archives before any test executes one. For implementation details, see the contributor workflow.
Workflow skills name preferred tools when they help, with bounded fallbacks for portability.
| Tool | Helps with | Fallback |
|---|---|---|
| tilth (MCP) | AST-aware read/search/edit and dependency context | Native AST/LSP/anchored-edit tools per the shared routing contract |
sg (ast-grep) | Structural pattern matching and codemods (sg --rewrite) with metavariables | LSP or tilth for symbol/caller questions; anchored edits for non-structural block changes |
| Context7 (MCP) | Library and API documentation | repo docs, package docs, vendor pages, web search |
| Tavily (MCP) | Current web/vendor research | host web search or user-supplied sources |
| LSP / Serena (MCP) | Type-aware xrefs (find_referencing_symbols, find_implementations), symbol-bounded edits (rename_symbol, replace_symbol_body, safe_delete_symbol), and LSP diagnostics | sg, tilth_search, targeted reads via tilth |
| hallouminate (MCP) | Per-repo wiki for cross-session design rationale, ADR grounding, and /mold evidence | Skip wiki grounding; proceed with diff + code evidence only; cap at speculating when design rationale is central |
| milknado (MCP) | Mikado task-graph backend for /cook's fan-path curd prerequisite tracking | In-report curd decomposition in manifest YAML; no external task-graph backend needed |
gh | GitHub issues, PRs, checks, examples | local git commands or user-provided links/logs |
mergiraf | Structured merge conflict resolution | manual conflict resolution plus tests |
just | Project task discovery | package scripts or documented commands |
When a preferred tool is unavailable, workflow skills say so once, use the strongest bounded fallback, and lower confidence only if evidence quality suffers.
Install every skill with the skills.sh installer. The
skills form one pipeline (/cheese → /mold → /cook (⇄ /press) → /age → /cure), so install them together rather than cherry-picking:
npx skills@latest add paulnsorensen/easy-cheese --all --global
--all is shorthand for --skill "*" --agent "*" -y: every published skill,
into every detected agent, no prompts. --global installs them user-wide, so
they are available across every repo.
To scope the install to just the current repo instead (recorded under
.agents/skills/), drop --global and run it from that repo:
npx skills@latest add paulnsorensen/easy-cheese --all
After install, start with /cheese if you're not sure which wheel to cut into
first, or jump straight to a specific skill like /cook, /age, or
/pasteurize. There is no required follow-up setup skill.
The dist branch holds the skills with their built archives. main tracks no archives. Clone dist, then copy the skills you want into your skills directory:
git clone --branch dist --depth 1 https://github.com/paulnsorensen/easy-cheese.git /tmp/easy-cheese-dist
# Per-user
mkdir -p ~/.claude/skills
cp -r /tmp/easy-cheese-dist/skills/age ~/.claude/skills/
# Per-project
mkdir -p .claude/skills
cp -r /tmp/easy-cheese-dist/skills/cook .claude/skills/
Copy skills/<name>/ from the dist branch into wherever the harness loads Agent Skills from. The format follows the agentskills.io spec and works in any compliant client.
The reference validator from agentskills/agentskills checks frontmatter and naming:
pip install skills-ref # ships the `agentskills` CLI
agentskills validate ./skills/age
Each SKILL.md must have YAML frontmatter with at least name and description, and name must match the parent directory name.
Several workflow skills benefit from MCP servers. Install the ones you need.
tilth provides the preferred broad source search/read/edit backend. Equivalent native AST/LSP/anchored-edit backends satisfy the shared source-code routing contract when Tilth is unavailable.
# Install tilth CLI via npm (Node.js v18+) — no Homebrew formula upstream
npm install -g @paulnsorensen/tilth-nightly@latest
# or run via npx — no global install needed:
# npx -y @paulnsorensen/tilth-nightly@latest install claude-code --edit
# Register as an MCP server — include --edit for tag-anchored writes
tilth install claude-code --edit # Claude Code
tilth install cursor --edit # Cursor
tilth install vscode --edit # VS Code
tilth install codex --edit # Codex CLI
tilth install gemini --edit # Gemini CLI
tilth install zed --edit # Zed
After registering, restart your harness and confirm these tools appear:
mcp__tilth__tilth_searchmcp__tilth__tilth_readmcp__tilth__tilth_listmcp__tilth__tilth_depsmcp__tilth__tilth_write (only with --edit)Context7 fetches up-to-date, version-specific library docs into your session. Used by /briesearch and /cook when available.
Claude Code:
claude mcp add context7 -- npx -y @upstash/context7-mcp@latest
Other harnesses — add to your MCP config file:
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"]
}
}
}
For higher rate limits, get a free API key at context7.com and append --api-key YOUR_API_KEY to the args array. A keyless hosted option is also available:
{
"mcpServers": {
"context7": {
"url": "https://mcp.context7.com/mcp"
}
}
}
Requires Node.js v18+.
Tavily provides real-time web search and content extraction. Used by /briesearch when available.
Get a free API key at tavily.com, then:
Claude Code:
claude mcp add tavily -- npx -y tavily-mcp
Set your key in the environment or pass it inline:
TAVILY_API_KEY=your-key npx -y tavily-mcp
Other harnesses — add to your MCP config file:
{
"mcpServers": {
"tavily": {
"command": "npx",
"args": ["-y", "tavily-mcp"],
"env": {
"TAVILY_API_KEY": "your-key"
}
}
}
}
Requires Node.js v18+.
The optional tools listed under Optional tools are referenced by workflow skills. None are required, but having them available unlocks better fallbacks and richer output.
gh)brew install gh # macOS/Linux via Homebrew
winget install GitHub.cli # Windows
# or see https://cli.github.com for other methods
gh auth login
sg)Used by /cook, /age, and /cure for structural codemods when tilth is unavailable.
brew install ast-grep # macOS/Linux
npm install -g @ast-grep/cli # Node.js
cargo install ast-grep # Rust/Cargo
scoop install ast-grep # Windows (Scoop)
Structured merge-conflict resolution used by /melt.
cargo install mergiraf # Rust/Cargo
brew install mergiraf # macOS/Linux (if tap is available)
justProject task runner used by /cook and /press to discover and run project commands.
brew install just # macOS/Linux
cargo install just # Rust/Cargo
winget install Casey.Just # Windows
The /plate skill's semantics-preserving/semantics-altering review-unit policy adapts Jeff Sarnat's Structuring Changes With The Code Reviewer in Mind. /plate's PR-topology, commit-shaping, and verification-body rules are project-specific extensions of that principle.
The shared voice kernel at skills/age/references/voice.md — output discipline, reasoning posture, the certain | speculating | don't know confidence vocabulary, and the depth-vs-question split — adapts a Claude Opus 4.7 system-prompt experiment by Reebz, narrowed to the parts that earn their keep in a portable skills toolkit. Cross-referenced from briesearch, culture, mold, cook, and cure.
The /pasteurize skill — the six-phase diagnosis loop (feedback loop → reproduce → hypothesise → instrument → fix + regression test → cleanup) and the "build a feedback loop first" insight — adapts Matt Pocock's diagnose skill. Easy-cheese-specific adaptations (shared source-code routing, handoff slug schema, --auto chain, /cook handoff for Phase 5) are layered on top.
The /wheypoint skill — compacting a conversation into a handoff document (with a suggested-skills section, no-duplication of existing artifacts, and secret redaction) — adapts Matt Pocock's handoff skill. Easy-cheese-specific adaptations: the handoff lands as a durable, resumable artifact at .cheese/notes/<slug>.md (rather than the OS temp directory) carrying the standard handoff slug, the suggested-skills section is a state-to-skill mapping over the cheese pipeline expressed as the slug's next: field plus named skills, and resumption runs through /cheese --continue <slug>.
The Superpowers brainstorming skill — adapted into /mold's design dialogue. Easy-cheese-specific adaptations: the agent-introduced-scope grep gate, shape-check blast-radius numbers, the handshake (the agent's coherence self-check plus the user's save approval), and ADRs captured as a durable curdle by-product are ahead of the borrowed brainstorming flow.
The grill-with-docs skill (Pocock) — adapted into /mold's Grill phase with grounded, cited claims: every critical claim is verified from local code or /briesearch before seams are locked.
The cumulative-domain-model feature — the cumulative ubiquitous-language discipline that grows a durable domain-model.md domain model across sessions — adapts Matt Pocock's domain-modeling skill. Easy-cheese-specific adaptations layer the cheese pipeline's grounding and artifact conventions on top.
The /age rubric's shallow-abstraction and exported-special-case rows — pass-through methods and variables, adjacent layers restating one abstraction, and error/default/config decisions a producer exports to every caller — adapt John Ousterhout's A Philosophy of Software Design, read through his Stanford CS190 lecture notes on modular design and the APOSD vs Clean Code discussion. /mold's option-scoring line uses his stated design test — whether an idea reduces the information a developer must know, or makes that information more obvious. Easy-cheese-specific adaptations: the principles ship as computed-severity rubric rows with detection signals rather than prose advice, and the complexity dimension keeps its numeric budget as a mechanically-checkable smell trigger while adding the counterweight rows implied by his critique of arbitrary size limits and his "only decompose if it can be done cleanly" test.
The /age reframe dimension adapts the "code judo" lens from Cursor's thermo-nuclear-code-quality-review skill: look for a different model of the change that deletes branches, modes, or layers instead of moving them. Easy-cheese-specific adaptations: the lens ships as a protected review subject with a four-part evidence contract (incidental complexity, new model, deleted concepts, preserved behavior) and computed severity, and a reframe of an approved design is a user decision rather than an automatic /cure rewrite.
| Review diffs across thirteen staff-engineer dimensions and produce a severity-grouped findings report. |
skills/affinage/SKILL.md | /affinage | Triage external PR claims — review comments and CI failures — through the /age lens, hand the chosen fixes to /cure, then post replies back on GitHub. |
skills/cure/SKILL.md | /cure | Fix user-selected findings, validate, and prepare the branch for shipping. |
skills/plate/SKILL.md | /plate | Final writing, validation, commit, and ordinary-or-stacked PR publication gate. Explicit topology choices win; obvious cohesive work opens as one PR, while stack recommendations and ambiguous shapes ask before mutation. |
skills/hard-cheese/SKILL.md | /hard-cheese (or --hard flag) | Metacognitive vibecheck gate before review — asks the author to explain the diff's causal logic, grades the explanation against the SOLO Taxonomy. Standalone or via --hard propagation through the pipeline. |
skills/ultracook/SKILL.md | /ultracook | Compatibility redirect to /cook; its retained scripts, references, and manifest paths remain fan-path internals consumed by /cook. |
skills/melt/SKILL.md | /melt | Resolve merge / rebase / cherry-pick conflicts via the structural cascade (mergiraf → rerere → kdiff3) with batch, pick-side, and lockfile helpers. |
skills/wheypoint/SKILL.md | /wheypoint | Mark a checkpoint: compact a mid-task conversation into a durable handoff document at .cheese/notes/<slug>.md (resumable slug + state-mapped suggested-skills + redacted secrets) so a fresh agent can resume via /cheese --continue <slug>. |