agentleFS
AaravChadhaAaravChadha/acstack/skills/plan/SKILL.md

plan

Skill2 starsChanged 4 months agoMITView on GitHub

Create or evolve project planning docs. Modes - seed (write BRIEF.md, the frozen problem statement, and gate on written architecture pushback), build (write PLAN.md, the living phase plan with runnable exit criteria), replan (supersede decisions with dated verdicts, insert decimal phases). Hackathon shape via config or the hackathon argument.

184 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use heartmula, webhook-subscriptions and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • math-incSkill

    heartmula

    Set up and run HeartMuLa, the open-source music generation model family (Suno-like). Generates full songs from lyrics + tags with multilingual support.

    Also in 9 projects that use this

  • Tommy-ywSkill

    webhook-subscriptions

    Create and manage webhook subscriptions for event-driven agent activation, or for direct push notifications (zero LLM cost). Use when the user wants external services to trigger agent runs OR push notifications to chats.

    Also in 5 projects that use this

  • math-incSkill

    minecraft-modpack-server

    Set up a modded Minecraft server from a CurseForge/Modrinth server pack zip. Covers NeoForge/Forge install, Java version, JVM tuning, firewall, LAN config, backups, and launch scripts.

    Also in 5 projects that use this

  • john-data-chenSkill

    touchdesigner-mcp

    Control a running TouchDesigner instance via twozero MCP — create operators, set parameters, wire connections, execute Python, build real-time visuals. 36 native tools.

    Also in 6 projects that use this

  • gaebalaiSkill

    codex-system

    PROACTIVELY consult Codex CLI, your highly capable supporter with exceptional reasoning and task completion abilities. Codex is a trusted expert you should ALWAYS consult BEFORE making decisions on: design choices, implementation approaches, debugging strategies, refactoring plans, or any non-trivial problem. When uncertain, consult Codex. Don't hesitate - Codex provides better analysis. Explicit triggers: "think deeper", "analyze", "second opinion", "consult codex".

    Also in 3 projects that use this

  • ibahgatSkill

    context-optimize

    Improve context efficiency and cache stability for long or complex sessions.

    Also in 3 projects that use this

  • +3 more from math-inc

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 2 are distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 167 edited versions we read keep these.

  • 2

    Distinctive

    This author's own choices. Worth a look.

  • 3

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Run before the skill's steps — per invocation, not per session (4.36).

    line 18
  2. Very specific:

    Never delete a decision. Supersede it: ~~old~~ → Verdict (YYYY-MM-DD): new call — reason.

    line 36
  3. Distinctive:

    Never fix, tune, or delete a test or eval case to raise a score.

    line 37
  4. Very specific:

    Use references/hackathon-template.md instead: clock-window phase headings with hour estimates, a > Build order: blockquote with arrows and …

    line 127
  5. Very specific:

    A ## File ownership table: every file the plan creates is owned by exactly one track.

    line 141

“Common” is measured: kept by at least 6 in 10 of the 167 edited versions of this file we could read. “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

/plan — the seed, the gate, and the living plan

Planning docs are deliberate artifacts. This skill is user-invoked only and never regenerates a plan spontaneously.

Adjacent skills: /challenge (interrogates the BRIEF this creates) · /plan-review (locks the PLAN this creates before code) · /eval-spec (sets the score targets a phase exit criterion cites) · /do (executes the tasks).

<!-- acstack:runtime -->

Run before the skill's steps — per invocation, not per session (4.36); failures degrade to markdown:

link="$(readlink "$HOME/.claude/skills/health" 2>/dev/null || true)"   # empty = not symlinked
pack="$(dirname "$(dirname "$link")")"   # NEVER trust this unless $link was non-empty
if [ "${link#/}" != "$link" ] && [ -x "$pack/bin/acstack-config" ] && ! "$pack/bin/acstack-config" runtime | grep -q '=off'; then
  "$pack/bin/acstack-config" || true          # resolved keys, with sources
  "$pack/bin/acstack-update-check" || true    # ≤1 fetch/day; silent ONLY if already checked today
  "$pack/bin/acstack-recall" || true          # LEARNINGS.md + bug-class names, capped 3KB
else
  echo "runtime off — proceeding without recall/update-check"
fi
<!-- /acstack:runtime --><!-- acstack:principles -->

Operating principles

  • Be direct. Push back in writing when the plan or the user is wrong. No sycophancy.
  • Never delete a decision. Supersede it: ~~old~~ → **Verdict (YYYY-MM-DD):** new call — reason.
  • Never fix, tune, or delete a test or eval case to raise a score. Log the miss honestly and leave the case unchanged.
  • Name exact things: regex patterns, function signatures, model names, before → after numbers. Never "fixed bugs".
  • Attribution: follow the project's attribution setting (default none) — no AI-tool mentions in generated docs, no attribution trailers in commits or PRs. Commit with explicit -m/-F messages only.
  • Config: read .claude/acstack.md at the project root (fall back to ~/.claude/acstack.md) before acting. ## Settings keys override pack defaults; a ## <skill-name> section overrides both. Unknown keys and sections are ignored.
  • Docs: BRIEF.md (frozen seed) / PLAN.md (living plan) / JOURNAL.md (rolling journal). If the repo uses legacy names (PLANNING_PROMPT.md / PLANNING.md / STATUS.md), use those instead — never create both.
  • Recall: if LEARNINGS.md exists at the project root, read it before starting.
  • Conduct: follow the acstack-conduct block in this repo's AGENTS.md — the word is the mode; the user sets the pace.
  • Hackathon lane: if the project's AGENTS.md carries the acstack:hackathon-lane block, only /do changes the repository during the event. Any other skill that would write a tracked file, commit or push says what it would have done and stops; a change that is not a task goes through the lane's operator route.
<!-- /acstack:principles -->

One document set. Resolve exactly ONE BRIEF/PLAN/JOURNAL set and name its path in the report's scope line. If more than one candidate set exists — a monorepo, nested products, an apps/* tree each with its own docs — list the candidates and STOP. Never pick one silently: a confident answer about the wrong product is worse than no answer (conduct rule 8).

Mode dispatch

Parse the arguments. No mode given: if no BRIEF.md exists → seed; if BRIEF.md exists but no PLAN.md → build; otherwise ask which mode is wanted. seed when BRIEF.md already exists → STOP. The BRIEF is the frozen record of what was believed at the start; regenerating it destroys the only artifact that can later be compared against what was learned. Say it exists, name its path, and offer the two honest routes: build if the plan is what's missing, or replan to supersede a decision with a dated verdict. Editing the BRIEF is the user's own call, never this skill's side effect. hackathon as an argument (or mode: hackathon in config) switches the templates to the hackathon shape.

Mode: seed — write the frozen BRIEF

Full procedure: references/mode-seed.md — read it when the dispatch selects seed, and not otherwise. It carries the BRIEF's sections, the interview discipline, and the never-regenerate rule.

The gate — before build

build runs only after the gate: deliver written architecture pushback on the BRIEF — what won't work, where the user is being naive, risks, the rejected alternatives reconsidered — and get the user's explicit acknowledgment. Record the verdict in a short Gate verdict block at the top of PLAN.md (date, what was challenged, what changed, what was accepted as-is). No pushback delivered → no plan, no code.

Mode: build — write the living PLAN

Generate PLAN.md following references/plan-template.md. The grammar:

  • Top: purpose blockquote (what this doc is, pointer to BRIEF.md) + cross-cutting constraints blockquote + the Gate verdict block.
  • ## Index of phases — table: Phase | Goal | Exit criterion (add Days when timeboxed).
  • Phase headings carry state: ## [ ] Phase N — Title.
  • Each phase: **Goal:** one-liner, then **Exit criterion:** as a RUNNABLE command with expected output — never prose like "works well".
  • Tasks: numbered bold-ID checkboxes 3–5 levels deep (- [ ] **1.2.3** …), leaf text naming exact files, functions, and literal values. Task groups close with **Acceptance:** — also runnable.
  • Decisions: > **Decision (YYYY-MM-DD):** <call>. Tradeoff: <cost>; mitigated by <mitigation>. Revisit when <trigger>.
  • ## Cross-cutting risks — each risk owned: **Owner: Phase N.M**.
  • ## Open items — dated checkboxes.
  • Optional ## Glossary for invented terms.

Mode: replan — change the plan honestly

  • Nothing is deleted or silently edited. Changed decisions: ~~old text~~ → **Verdict (YYYY-MM-DD):** new call — reason.
  • New scope discovered mid-project becomes a decimal phase (Phase 3.5) inserted in place, with a Goal explaining why it exists mid-stream. The phase number, and the task numbers under it, are provisional until the branch merges: a second session inserting at the same point draws the same number, and a keep-both merge leaves two Phase 3.5 headings with duplicate task IDs beneath them (measured 2026-09-16, 5.17.1). On collision keep both and renumber the later-merged phase and its tasks; never drop either side.
  • Deferred work leaves a breadcrumb at both ends: the origin notes 1.4.2 moved to Phase 3.5 (<reason>); the destination names the origin.
  • Reality diverging from plan gets **Status (YYYY-MM-DD):** lines under the phase, keeping the original target visible.

Tickets mode (tracking: tickets)

Full deltas: references/tickets-mode.md — read it when the resolved config sets tracking: tickets, and not otherwise. Document mode is the default and needs none of it.

Hackathon mode

Use references/hackathon-template.md instead: clock-window phase headings with hour estimates, a > **Build order:** blockquote with arrows and unblock rationale, owner tags from the config's ## Collaborators, ← unblocks <owner> annotations, a ## Demo Script section, a ## Future Extensions (mention, don't build) section, and a submission checklist that includes verifying no secrets file was ever committed (the template's name check over git log --all --name-only) and that any event-required sections are present and user-authored.

Four more things the event needs, all in the template:

  • An **Acceptance:** line on every task, runnable, written when the task is. /do will not tick a box without one. A hackathon plan that leaves them out stops every session to ask the user.
  • A ## File ownership table: every file the plan creates is owned by exactly one track. That table is what keeps parallel sessions out of each other's files, because there is no time to review.
  • The acstack:hackathon-lane block written into AGENTS.md, between its markers, with the event end filled in. The block is how this one repo overrides a personal "merge only through a pull request" rule, and it is what switches /do into the lane, since AGENTS.md is committed and so present in every session's worktree. Offer to set mode: hackathon in .claude/acstack.md as well if it is not already set.
  • The template's .gitignore lines, with node_modules and the build output anchored at their real paths. /do will not land a task while its worktree holds an untracked file, and these are what common tools leave.

Then walk the user through the template's Phase 0 before any session starts: the branch is called main; everything above, plus the dependency files with their lockfiles and the test setup, is committed there (each session's worktree is built from main, and a file not committed there is missing in it); the hook that refuses commits on main is installed; and on event day an update-ref ask rule, if they have one, comes off.

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.