agentleFS
ekajaya740ekajaya740/skills/project-scaffold/SKILL.md

project-scaffold

Skill0 starsChanged 12 days agoMITView on GitHub

Scaffold a new project of any kind — pick the layout, stack defaults, and agent layer, and get to the first green run. Covers TypeScript/Node, Astro/Cloudflare, Python, monorepo, and agent-only/skill repos.

18 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 1 is distinctive, and 3 are very specific to this project.

  • 0

    Common

    Most of the 14 edited versions we read keep these.

  • 1

    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. Very specific:

    Start a project that is already shaped the way an agent can work in it.

    line 10
  2. Very specific:

    Read DEFAULTS.md before choosing anything.

    line 13
  3. Distinctive:

    Ask this and wait for the answer before writing anything below:

    line 61
  4. Very specific:

    Ask once and wait. ~/dotfiles existing on the machine is not a yes.

    line 67

“Common” is measured: kept by at least 6 in 10 of the 14 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

Project Scaffold

Start a project that is already shaped the way an agent can work in it. The goal is not a template — it is a first green run you can hand to verify-change as evidence.

Read DEFAULTS.md before choosing anything. It holds the stack choices and why they are defaults rather than preferences.

1. Classify the project

One question decides everything else: what has to exist when the project is done?

KindAnswerTarget
Web app, one deployableA URLtargets/web-app.md
Multi-package repo, several deployablesSeveral URLs from one repotargets/monorepo.md
CLI, service, script, data workA binary or a running processtargets/python.md
Skills, rules, prompts — no buildFiles an agent readstargets/agent-only.md
Docs vault, research corpus, writing, notesFiles a human reads, that must stay validtargets/agent-only.md § Non-code repos
Astro SSR on Cloudflare WorkersA Worker + Pagestargets/cloudflare.md

Ambiguous? Pick by deployable count, not by language. One deployable is a web app even if it has twenty folders. Several is a monorepo even if they share a language.

No deployable at all is not a lesser project. A vault, a corpus or a book has the same three needs as a service — a stated structure, an agent layer, and one command that proves it is still valid. Only the third differs: a link check or schema lint instead of a build. Do not scaffold a package.json into a notes repo to satisfy a template.

Done when you can name the target file and the single command that will prove the project is valid.

2. Write the structure before the content

Each target file gives the directory tree with a reason per folder. Copy it, then delete folders you cannot justify in one line. An unjustified folder becomes a home for nothing.

Three folders every non-trivial project gets, whatever the stack:

FolderHoldsWhy it exists
docs/Decisions, architecture, environment, testingThe place AGENTS.md points at instead of growing
scripts/Repeatable commands a human or CI runsAnything run twice stops being a one-liner in a README
.github/workflows/CIThe green check verify-change reads

Done when the tree has a stated reason for every top-level folder and no folder is empty.

3. Lay down the agent layer

Per skill repo-init.

Ask about dotfiles first

Ask this and wait for the answer before writing anything below:

Does this project use your ekajaya740/dotfiles? They are tuned for omp — omp-jev routing, 9router model aliases, the claude/ and jev/ deploy scripts — so a repo on another harness inherits wiring it will never read.

Ask once and wait. ~/dotfiles existing on the machine is not a yes.

AnswerWhat changes
YesPoint at the machine layer, never copy it: AGENTS.md names ~/dotfiles and bash ~/dotfiles/bootstrap.sh as the machine setup step, and the harness shims come from there.
NoWrite CLAUDE.md / .cursor/rules by hand, and record no dotfiles dependency.

Done when AGENTS.md carries one line under the stack section: either "machine layer: ekajaya740/dotfiles (omp-tuned)" or "self-contained, no dotfiles dependency".

Then the layer itself, minimum, in this order:

  1. AGENTS.md — stack, the green-command table, hard rules, out-of-bounds.
  2. CLAUDE.md → @AGENTS.md (and any other harness shim the user needs).
  3. .agents/skills/ + skills-lock.json — the project-local skill store, pinned and reproducible.
  4. docs/architecture.md — only if the project has more than one module.
  5. .gitignore — before the first commit, never after. Ignore .agents/ and .claude/skills/; track skills-lock.json, which no rule ignores.

Done when a fresh agent could run the project from AGENTS.md alone, and a clean checkout restores its skills with one command.

4. Get green once, deliberately

Install, build, typecheck, test, lint — whatever the target's table lists. Fix what fails now, while the project is small enough to understand completely. A scaffold that ships yellow becomes a repo where yellow is normal and nobody can tell a new break from the old one.

Record the exact commands and their output in the reply. That is the evidence verify-change will accept later.

Done when a clean checkout runs the green command to exit 0, and you have pasted the line that proves it.

5. Commit the baseline

One commit, message stating the stack and that it is a working baseline. Not "initial commit" — a year later that tells nobody what a working baseline was.

What not to scaffold

  • No placeholder files. An empty utils.ts is a promise nobody keeps. Delete it; adding a file later is one command.
  • No example code. A sample route nobody asked for is code that has to be maintained and reviewed and teaches the wrong shape.
  • No test file with a fake assertion. expect(true).toBe(true) is worse than no test: it makes the suite green while proving nothing.
  • No license, README badges, or CI matrix the user did not ask for. Ask once, in the reply, then drop it.

Related

  • Stack choices and their reasons → DEFAULTS.md
  • The agent layer in detail → skill repo-init, and its SKILLS.md for the pin set
  • Proving the result → skill verify-change

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.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.