agentleFS
3metaJun3metaJun/mstack/skills/meta-mode/SKILL.md

meta-mode

Skill0 starsChanged 27 days agoMITView on GitHub

Route a non-trivial engineering task through a verifiable mstack workflow and the capabilities available in the current harness.

We split this skill into the rules it gives an agent

15 rules. About 0 are common, 8 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    When the repository has .harness/policy.json, read AGENTS.md and .harness/workflow.md before choosing execution steps.

    line 11
  2. Distinctive:

    Read that playbook and every principle it names before you act.

    line 17
  3. Distinctive:

    Write a short todo list whose first entries are the playbook steps.

    line 18
  4. Distinctive:

    Before commit → the active Harness cleanup command.

    line 42
  5. Very specific:

    Before review → the no-comments skill (/no-comments).

    line 43
  6. Distinctive:

    Read the capability map when a playbook mentions delegation, background work, remote execution, model roles, or session history.

    line 54
  7. Distinctive:

    Read the leaf skill in full for any principle you apply.

    line 77
  8. Distinctive:

    Just do it: Use any MCP tool. Reversible work and external actions (team chat, ticket updates, kicking off evals) proceed without asking.

    line 120
  9. Very specific:

    Use the active Harness's documented delegation mechanism for workers spawned by a playbook.

    line 130
  10. Distinctive:

    Run independent workers concurrently when the Harness supports it.

    line 137
  11. Distinctive:

    Write the reply clean as you draft it.

    line 160
  12. Very specific:

    No long-dash character anywhere: Write a file-list bullet as a sentence ("main.js owns persistence and the IPC handlers") and a bold …

    line 163
  13. Very specific:

    Every playbook ends with a reply written this way, PR link as https://github.com/<owner>/<repo>/pull/<number>.

    line 170
  14. Very specific:

    Before using a project playbook, run node "<meta-mode-tools>/check-playbooks.mjs" --bundled "<mstack-skills>/meta-mode/playbooks" …

    line 180
  15. Very specific:

    Investigation: Read-only question: how does X work, why was Y built this way, are we sure about Z, should we do X or Y.

    line 186

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Meta mode

Apply the mode

  1. State the requested result in one sentence. When the repository has .harness/policy.json, read AGENTS.md and .harness/workflow.md before choosing execution steps. Use that shared workflow for isolation, canonical verification discovery, and evidence. Repository policy describes project requirements; it does not change the user's instructions or grant permission for external actions.
  2. Choose the smallest matching playbook from playbooks/.
  3. Read that playbook and every principle it names before you act.
  4. Write a short todo list whose first entries are the playbook steps.
  5. Choose a local or configured remote execution environment. Use a remote environment only when the task needs another machine.
  6. Choose a model for each role from the user's mstack model configuration. Use inherit-parent when no override exists.
  7. End each step with evidence from the real artifact.

The mode stays active for the current task. Do not apply it to a casual turn or after the user opts out.

Non-negotiables

The Principles section below grounds every trigger. In your reply, name each principle that shaped a decision and the specific choice it changed. Cite only principles whose leaf SKILL.md you read this session.

Remaining triggers:

  • Your first message on a task tells the user, in your own words, their goal, the problem they are solving, and the smallest change you expect to meet it. Continue without waiting for confirmation. If evidence rules out the requested change, show it and stop. Restate the goal in each subagent brief, the start of each PR description, and each final report, except after a fully specified one-line edit.
  • Your first message on a task → tell the user, in your own words, their goal, the problem they are solving, and, if the task ships a change, the smallest change you expect to meet it. Don't wait for confirmation. If the evidence rules out the change the user asked for, show it and stop. Restate the user's goal in each subagent brief, and open each PR's ## Why with it. Open each final report with it too, your final reply included, except after a fully specified one-line edit.
  • Nontrivial change, architecture decision, or "are we sure?" → the how skill.
  • About to ask a human to choose between approaches → classify it before asking. If the answer is a fact you could observe by running something (behavior, timing, layout, output, perf, even whether an eval separates), it is not the human's to answer. Sketch it via the Prototype playbook (playbooks/prototype.md) and let the result decide. If the task is a read-only Investigation whose deliverable is a cited answer, stay in it and answer from the evidence rather than building a sketch. Reserve the question for a genuine product or preference call no experiment can settle. Under a full-autonomy grant, decide a call that the grant covers, act on it, and report it, with no reply word and no offer. Under the grant, apply a default for a call that only the operator can make. Report the default with a full explanation, and say in plain words what the operator could tell you to do instead. The operator answers in their own words. Never give a shorthand token to type back. Gates that the operator named and the Always pause list in Autonomy still need the operator.
  • Any code → name the data shape first, and choose its organizing structure per principle-model-the-domain.
  • Code crossing a function boundary → the architect skill, parallel design exploration before implementing.
  • Parallel fan-out → the swarm skill for coverage matrices, races, gauntlets, and exploration partitions. Use arena for design or code bakeoffs with base selection and grafting.
  • Contested design → the interrogate skill (multi-model adversarial) before shipping.
  • Nontrivial multi-step → write the throughput checkpoint (Feature step 3).
  • Any prose surface → the unslop skill. Your reply is a prose surface. Write it per Writing the reply. Agent-facing prose also follows the repository's skill-authoring guidance.
  • Docs, RFCs, readmes, PR descriptions, or commit messages → the technical-writing skill (/technical-writing).
  • Before commit → the active Harness cleanup command.
  • Before review → the no-comments skill (/no-comments).
  • Shipping UI / IDE / CLI → use the matching control skill exposed by the active Harness. For bug fixes, reproduce first on the same surface yourself. Hand to the user only under the narrow Bug fix step 1 exception.
  • Running a benchmark, measuring perf yourself, or reporting a speedup or regression you measured → the benchmark-checklist skill before you report or act on the number.
  • Any PR-status request → the Babysit playbook (playbooks/babysit.md). That includes "babysit this", "get it green", "address the bugbot comments", and the commonest phrasing, "check on PR X" / "anything outstanding on X". Never triggered by merely opening a PR. Declare its mode before polling. The playbook's step 1 owns the request-to-mode mapping. Reaching for drive inside a phase agent stops that agent finishing its turn.
  • Asked to land or ship a green stack → the Shipping playbook (playbooks/shipping.md). Green is not safe. Nothing gets armed before an independent per-PR verdict, and only the contiguous verified run from the root lands.
  • Bugbot or the agentic security review commented → skeptical posture. They catch real bugs and also file non-issues and nitpicks, so assess each on its merits and dismiss noise with a concrete reason instead of churning code. Triage fix / dismiss / ask per references/bugbot-triage.md.
  • Broken skill mid-task → fix it in its own PR. Don't block. Don't silently work around it.
  • Long, autonomous, or multi-phase work, or any task the user steps away from to review later ("going to bed", "trust it when i'm back", "/loop until X") → a decision trail via the show-me-your-work skill. Commit it when stakes need an auditable record. Keep it local otherwise.

Map capabilities

Read the capability map when a playbook mentions delegation, background work, remote execution, model roles, or session history. The map distinguishes a native implementation from a documented fallback. Report the distinction when it changes the result.

The canonical skill tree uses capability names. Adapters map those names to a Harness. Keep vendor-specific paths, commands, transcript formats, and model names in the Harness adapter or a user environment profile.

Resolve installed paths

Playbooks use <mstack-skills> for the directory that contains the installed mstack skills. They use <meta-mode-tools> for the optional meta-mode-tools artifact directory. Resolve both paths from the active meta-mode skill before you run a command. In this repository, the paths are <repo>/skills and <repo>/tools/meta-mode. The default installer places them at <Harness root>/skills and <Harness root>/tools/meta-mode, so the tools are at ../../tools/meta-mode from the meta-mode skill directory. If the install uses an artifact destination override, use the destination that the installer reports.

Principles

Read the leaf skill in full for any principle you apply. Each entry names when it applies.

Core

  • Laziness Protocol (principle-laziness-protocol). Refactoring, sizing a diff, or tempted to add abstractions, layers, or signal threading. Bias to deletion and the smallest change that solves the problem.
  • Foundational Thinking (principle-foundational-thinking). Before writing logic: core types and data structures, scaffold-vs-feature sequencing, what concurrent actors share.
  • Redesign from First Principles (principle-redesign-from-first-principles). Integrating a new requirement into an existing design. Redesign as if it had been foundational from day one.
  • Attack the Premise (principle-attack-the-premise). Two or more fixes that share one premise have failed the same gate. Take a census of which actors hold the imbalance before the next fix, then question the premise instead of writing another fix that assumes it.
  • Subtract Before You Add (principle-subtract-before-you-add). Sequencing an addition, refactor, or rewrite. Remove dead weight first, then build on the simpler base.
  • Minimize Reader Load (principle-minimize-reader-load). Reviewing or shaping code that's hard to trace. Count layers and hidden state, collapse one-caller wrappers, shrink mutable scope.
  • Outcome-Oriented Execution (principle-outcome-oriented-execution). Planned rewrites and migrations with explicit phase boundaries. Converge on the target architecture, don't preserve throwaway compatibility states.
  • Experience First (principle-experience-first). Product, UX, or feature-scope tradeoffs. Choose user delight over implementation convenience.
  • Exhaust the Design Space (principle-exhaust-the-design-space). A novel interaction or architectural decision with no precedent. Build 2-3 competing prototypes and compare before committing.
  • Build the Lever (principle-build-the-lever). Any non-trivial work. Build the tool that does or proves it (codemod, script, generator), not by hand. The tool is the artifact a reviewer reruns.

Architecture

  • Model the Domain (principle-model-the-domain). Writing stateful logic, or code that branches a lot or repeats a shape assumption across files. Encode the domain in a structure (state machine, typed model, table or registry, reducer, boundary, the right collection) instead of scattered conditionals.
  • Boundary Discipline (principle-boundary-discipline). Wiring validation, error handling, or framework adapters. Guards at system boundaries, trust internal types, keep business logic pure.
  • Type System Discipline (principle-type-system-discipline). Designing types or a signature in any typed language. Make illegal states unrepresentable, brand primitives, parse external data at boundaries.
  • Make Operations Idempotent (principle-make-operations-idempotent). Designing commands, lifecycle steps, or loops that run amid crashes and retries. Converge to the same end state.
  • Migrate Callers Then Delete Legacy APIs (principle-migrate-callers-then-delete-legacy-apis). Introducing a new internal API while old callers exist. Migrate and delete in one wave.
  • Separate Before Serializing Shared State (principle-separate-before-serializing-shared-state). Concurrent actors might write the same file, branch, key, or object. Eliminate the sharing first.

Verification

  • Prove It Works (principle-prove-it-works). After a task, before declaring done. Verify against the real artifact, not a proxy or "it compiles".
  • Fix Root Causes (principle-fix-root-causes). Debugging. Trace each symptom to its root cause, reproduce first, ask why until you reach it.
  • Sequence Work into Verifiable Units (principle-sequence-verifiable-units). Multi-step work (sweeps, migrations, runs of similar edits) and how you stack commits and PRs. Break work into small units that each end in a check, verify each before the next, and order delivery so the sequence proves itself.
  • Test Behavior, Not Implementation (principle-test-behavior-not-implementation). Writing, changing, or keeping a test. Call the code the way its users do and assert the result against a literal expected value. If the test would still pass when every imported function returns undefined, rewrite the assertion or delete the test.
  • Explain the Number (principle-explain-the-number). Apply before you measure, and before you trust, report, or act on a number you measured (a speedup, a regression, a throughput, a latency, or an eval result). Find what limits it, and rule out that it measured something other than the work you think.

Delegation

  • Guard the Context Window (principle-guard-the-context-window). Context fills up: large outputs, long files, repeated reads, fan-out planning. Route bulk to subagents, keep summaries in the main thread.
  • Never Block on the Human (principle-never-block-on-the-human). Tempted to ask "should I do X?" on reversible work. Proceed, present the result, let the human course-correct.

Meta

  • Encode Lessons in Structure (principle-encode-lessons-in-structure). You catch yourself writing the same instruction a second time. Encode it as a lint, metadata flag, runtime check, or script instead of more text.

Autonomy

Just do it. Use any MCP tool. Reversible work and external actions (team chat, ticket updates, kicking off evals) proceed without asking.

Always pause for irreversible writes: force-push to shared branches, deploys, data deletion, customer messages.

Session overrides: "Don't stop" / "going to bed" / "run until done" / "be fully autonomous" → keep going.

No is an acceptable answer. Asked whether to do something, invited to add scope, or shown an approach, reply with your real judgment. Decline, push back, or say "this doesn't earn its place" when true. A recommendation is a judgment, not a validation. Agreement is not the default, candor over sycophancy.

Subagents

Use the active Harness's documented delegation mechanism for workers spawned by a playbook. On a host with native delegation, PR-watching, or scheduling primitives, read its file under references/hosts/ first; otherwise continue below. Routed skills such as how, why, interrogate, reflect, and swarm define their own worker roles and review rules. Keep worker prompts and results in the format that the active Harness supports.

Run independent workers concurrently when the Harness supports it. Use background execution for new workers and follow-ups when available, so other reports can arrive while they run. If it does not, run them one at a time and record the fallback. Select each worker's model from /setup-mstack; use inherit-parent when no override exists. Give each worker a focused file or question and read its complete result before deciding.

Choose models by difficulty. Route cross-cutting design, concurrency, and subtle algorithms to the strongest configured judgment role. Route trivial mechanical edits to the fast implementer role. Role-specific settings override these defaults. Resolve inherit-parent through the Harness's documented native inheritance; auto uses its documented default model selection. A new CLI process does not inherit the parent chat's model. With run-role, pass the known parent model as --parent-model <name>, or choose --model auto for the CLI default. For a reviewer list, assign one string per worker in configuration order and cycle when a fixed-size workflow needs more workers. interrogate instead runs one reviewer per entry. CLI fanout via --all-models requires --read-only; launch writable workers individually with separate worktrees. If a model is rejected, never retry that rejected name. Follow the calling skill's fallback, or use an available model from the same family. If no valid fallback remains, use native parent-model inheritance and report the fallback.

You own every subagent's work. Review the diff and write your own summary, don't pass through what it said. A second opinion is the same prompt against a different model. Agreement is high-signal.

Fresh subagents by default. Give new work to a fresh subagent with consolidated scope, meaning the original brief, every later directive, and the prior agent's report and branch. This holds for a fix round, a follow-up, a retry, and the next queue item. Resume, message, or queue a follow-up on an existing subagent only when the new work strictly needs state that lives in that agent and is costly to move: its local checkout, its uncommitted changes, or a process it still runs, such as a dev server, a simulator, or a babysit watcher. A stop or hold order to a running agent is not reuse. A role such as a PR owner outlives its agent. Once that agent returns, a fresh agent takes the role's next round. Interrupt-chained resumes silently drop directives, so fire a fresh subagent with consolidated scope rather than trusting a "done" summary.

Writing the reply

Write the reply clean as you draft it. A cleanup pass after drafting does not remove these patterns.

  • Short declarative sentences. One thought per sentence, ended with a period.
  • No long-dash character anywhere. Write a file-list bullet as a sentence ("main.js owns persistence and the IPC handlers") and a bold section header as its own sentence ("Verification. End to end via CDP").
  • A colon as a mid-sentence connector is also out (unslop rule 14). A colon before a list is fine.
  • Terse is not an excuse to drop content. Short sentences, but every section the playbook's reply names stays: details, tradeoffs, choices, open decisions.
  • Frame impact for the consumer and the maintainer. Name who the work is for (an end user, a colleague importing the library) and what changes for them before any implementation detail. Then what the next engineer who owns this code inherits. If you can't say what either would notice, the work or the explanation is off.
  • Never fabricate a link, citation, or transcript reference. Link only artifacts you produced or read this session.
  • Every claim carries its evidence or its label in the same sentence. Measured, inferred, or guess. A prediction or an unseen cause is a guess. Never hand the human a check you could run.

Every playbook ends with a reply written this way, PR link as https://github.com/<owner>/<repo>/pull/<number>. The per-playbook lines below name only the content unique to that playbook.

Comments

Comments follow the same rule as the reply. Write them clean as you go. Keep a comment only for a non-obvious why the code can't show. A verify or test script gets no phase-narrating comments such as // Phase 1: add cards. The assertion or log string documents the step, as in assert(ok, 'persisted across restart'). This applies to every file you produce, including the delegate's diff.

Playbooks

Project playbooks. A repository can add playbooks under .agents/playbooks/, one Markdown file per playbook. The frontmatter can name comma-separated extends stems and must include when, a sentence that names the requests the playbook serves. When the selected bundled playbook has a project extension, or the request matches a project's when, open the project playbook too. Copy the bundled steps into the todolist verbatim. Apply each project change at the step named by its quoted text. A change is a list item that starts with **After**, **Before**, **Replace**, or **In**, followed by straight-quoted text copied from an extended playbook.

Before using a project playbook, run node "<meta-mode-tools>/check-playbooks.mjs" --bundled "<mstack-skills>/meta-mode/playbooks" <repository-root>. The checker reports missing bases, missing when fields, unanchored changes, and anchors that no longer occur after a mstack update. Report every line it prints. Do not guess where an unanchored change belongs.

Open a todolist whose first items are the matched playbook's steps, copied in verbatim, before any task-specific todos. A step you choose not to do stays in the list with a one-line skip: <reason>. Match the task to a playbook below, open its file, and copy its steps in verbatim.

A large or cross-cutting effort (a migration across many call sites, an ambitious multi-part change), or work the user steps away from to trust later, routes to the figure-it-out skill even when a narrower playbook like Feature fits. Use figure-it-out whenever no bundled playbook fits. It designs a bespoke, rigorous playbook for the task. A standing project-scale program (multi-day, many stacked PRs, a fleet of subagents under one coordinator) routes to Orchestrate instead. figure-it-out designs one bespoke run, orchestrate runs the program.

  • Investigation. Read-only question: how does X work, why was Y built this way, are we sure about Z, should we do X or Y. playbooks/investigation.md.
  • Bug fix. A reported defect to reproduce, root-cause, and fix with runtime evidence. playbooks/bug-fix.md.
  • Perf issue. A measured slowness to trace and improve against a baseline. playbooks/perf-issue.md.
  • Hillclimb. Sustained, scientific improvement of one metric against a target: loop hypotheses with before/after measurement, a decision log, and one commit per accepted win. Distinct from Perf issue, which is a one-off fix. playbooks/hillclimb.md.
  • Runtime forensics. Diagnose a runtime symptom (leak, idle-CPU spin, glitch) from live instrumentation. The deliverable is a diagnosis, not a fix. playbooks/runtime-forensics.md.
  • Trace forensics. Diagnose a captured profiling artifact (cpuprofile, trace, spindump, heap snapshot) handed to you after the fact. The deliverable is a diagnosis, not a fix. playbooks/trace-forensics.md.
  • Feature. New or changed behavior, built from a named data shape. playbooks/feature.md.
  • Refactoring. A behavior-preserving change to structure or shape (rename, extract, inline, dedupe, move). playbooks/refactoring.md.
  • Prototype. A throwaway sketch to make a design or behavioral decision cheaply, or to settle an empirical fork by observing it instead of asking the human ("prototype", "mock it up", "try this layout", "sketch it to decide"). playbooks/prototype.md.
  • Visual parity. Pixel-exact UI equivalence: matching two implementations or migrating a styling system. playbooks/visual-parity.md.
  • Authoring or modifying a skill. Writing or editing a SKILL.md. playbooks/authoring-a-skill.md.
  • Eval. Testing how a skill, structure, or prompt change affects agent behavior before promoting it. playbooks/eval.md.
  • Babysit. Driving a PR or a stack to merge-ready: conflicts, review threads, CI. playbooks/babysit.md.
  • Shipping. The half after Babysit. Independently verifying a green stack, then landing the contiguous verified run bottom-up through gh by default or Origin when its CLI is available. playbooks/shipping.md.
  • Autonomous run. A long task to drive to completion without stopping ("run until done", "/loop until X"). playbooks/autonomous-run.md.
  • Orchestrate. A standing project handed to one coordinator chat: multi-day, many stacked PRs, dozens to hundreds of subagents, minimal human turns ("run this whole project", "own this migration until it lands"). Distinct from Autonomous run, which drives one task to a predicate. Work one agent could finish inside the session's budget routes there, not here, however program-shaped the phrasing sounds. playbooks/orchestrate.md.
  • Autopilot-full. A queue of independent PRs run to merged with full autonomy. One owner per PR carries build through merge, and the root swarm-verifies each merge-ready head before its owner merges ("autopilot this queue", "full autopilot", one-owner-per-PR programs). playbooks/autopilot-full.md.
  • Autopilot-stack. Autopilot-full without the merge. A queue of PRs built and verified with full autonomy, then handed to the operator to land. A PR stacks only on a PR it builds on ("autopilot-stack", "autopilot, don't merge", "stack them, don't ship", "build the stack, I'll land it"). playbooks/autopilot-stack.md.
  • Session pickup. Resuming or taking over a prior agent's in-flight work from a transcript, cloud-agent URL, or pushed branch. playbooks/session-pickup.md.
  • Pause safely. Suspending in-flight work cleanly so it can be resumed, on an explicit pause, going offline, a Harness restart, or imminent context compaction. The complement to Session pickup. Full steps: playbooks/pause-safely.md.
  • Multi-phase or multi-PR plan. Work that spans phases or stacked PRs. playbooks/multi-phase-plan.md.
  • Worktree and simulator cleanup. Reclaiming local disk by pruning merged or abandoned git worktrees and stale iOS simulators ("what's using my disk", "clean up worktrees", "prune safe-to-prune worktrees", "free up space", "delete old simulators"). playbooks/worktree-cleanup.md.
  • Opening a PR. Invoked at the end of every other playbook. playbooks/opening-a-pr.md.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.