agentleFS
mayankjain1815-commitsmayankjain1815-commits/CITADEL/skills/scaffold/SKILL.md

scaffold

Skill4 starsChanged 4 months agoMITView on GitHub

Project-aware file generation. Reads existing codebase conventions (naming, structure, imports, exports, test patterns) then generates new files that match exactly. Wires generated files into the project's registration points.

49 other projects use a version of this, 2 of them edited.

Adopted by

Most recently taken up by

Used with

Projects with it also use docs-ci, docs-interfaces and 6 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.
  • jh941213Skill

    docs-ci

    문서 CI(링크·OpenAPI lint·breaking 게이트·mermaid 검증)나 문서 드리프트 감지(docs.yaml 신선도 검사)를 설치하거나 돌릴 때 사용. 문서 내용 작성은 docs-architecture·docs-interfaces·docs-manuals.

    Also in 3 projects that use this

  • jh941213Skill

    docs-interfaces

    API·이벤트 인터페이스 문서(OpenAPI·swagger·AsyncAPI 명세, 엔드포인트 레퍼런스, API 구성도·시퀀스, API CHANGELOG)를 만들거나 코드와 맞출 때 사용. 시스템 구성도는 docs-architecture, API 설계 원칙은 api-design-principles.

    Also in 3 projects that use this

  • RachaelQuiselSkill

    client-docs

    Client documentation. Use when a build needs documentation updates or missing project documents need to be identified.

    Also in 3 projects that use this

  • planailabsSkill

    docs-architecture

    Layout, build pipeline, and structural gotchas for this dual-Astro repo. Read before changing structure, routing, or adding content. Operational/dev-server questions → dev-build skill.

    Also in 3 projects that use this

  • +4 more from jh941213

The file

Show its rules and text

We split this skill into the rules it gives an agent

17 rules. 0 are common, 13 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 41 edited versions we read keep these.

  • 13

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the type is ambiguous, ask ONE clarifying question.

    line 43
  2. Distinctive:

    Search the codebase for 2-3 existing files of the same type.

    line 47
  3. Distinctive:

    Import style (path aliases?

    line 64
  4. Very specific:

    Test co-location (.test.ts next to file?

    line 67
  5. Very specific:

    Test files that only contain describe('...', () => { it.todo('...') })

    line 91
  6. Distinctive:

    Every generated file must be syntactically valid and importable

    line 102
  7. Very specific:

    No placeholder comments (// TODO: implement, // Add logic here)

    line 103
  8. Distinctive:

    No empty function bodies unless the exemplar has them

    line 104
  9. Distinctive:

    Only wire into registration points that the exemplars actually use

    line 126
  10. Distinctive:

    If a registration point uses alphabetical ordering, maintain it

    line 128
  11. Distinctive:

    Never create new registration points — only add to existing ones

    line 129
  12. Distinctive:

    Run typecheck — every generated file must pass.

    line 133
  13. Very specific:

    Target directory or file already exists: Do not silently overwrite.

    line 137
  14. Distinctive:

    Language or framework not detected: Ask the user directly rather than guessing.

    line 139
  15. Distinctive:

    Cost: No cost actions — file generation only.

    line 146
  16. Distinctive:

    Trust: No gates — safe at all trust levels.

    line 147
  17. Distinctive:

    All of these must be true before the skill exits:

    line 151

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

/scaffold — Project-Aware File Generator

Orientation

Use when: Creating a new component, module, service, route, hook, domain, or utility with existing examples in the project.

Do NOT use when: The file has no precedent (use /marshal for unconstrained generation), you're modifying existing files (use /refactor), or the project has no conventions yet.

Needs: target type, name, and optional description.

Protocol

Step 1: IDENTIFY THE TARGET

Parse the user's request into:

  • type: component | module | service | route | hook | domain | utility | custom
  • name: the name the user gave (e.g., "UserProfile", "auth-service", "settings route")
  • description: what it does, if provided (otherwise leave blank for now)

If the type is ambiguous, ask ONE clarifying question. Do not ask more than one.

Step 2: FIND EXEMPLARS

Search the codebase for 2-3 existing files of the same type.

Search strategy by type:

TypeSearch PatternWhat to Look For
component**/*.tsx in the same directory or sibling directoriesFunctional components with similar complexity
moduleSame directory as where new module will liveRegistration pattern, exports, config shape
service**/services/**, **/lib/**Class vs function, singleton vs factory, error handling
routeRouter config files, **/routes.*, **/pages/**Route definition format, lazy loading, guards
hook**/hooks/**, **/use*.tsNaming, parameter patterns, return types, cleanup
domainTop-level domain/feature directoriesManifest structure, entry point, internal layout
utility**/utils/**, **/helpers/**Pure function style, type signatures, JSDoc

For each exemplar, extract:

  1. File naming convention (PascalCase, kebab-case, camelCase, snake_case)
  2. Directory placement (co-located with component? separate hooks/ dir?)
  3. Import style (path aliases? relative? named imports? default exports?)
  4. Export style (named exports? default? re-exported from barrel/index file?)
  5. Internal patterns (how state is managed, how errors are handled, JSDoc or no)
  6. Test co-location (.test.ts next to file? __tests__/ directory? separate tests/ tree?)
  7. Types pattern (inline? separate .types.ts? shared types file?)

Output a brief analysis (3-5 lines) summarizing the conventions you found.

Step 3: DETERMINE THE FILE SET

Based on the exemplars, determine which files to generate. Not every project needs every file. Only generate what the project's conventions call for.

Decision matrix:

FileGenerate IF...
Main fileAlways
Types file (.types.ts)Project separates types into their own files (check exemplars)
Test file (.test.ts)Project has co-located tests for this type of file
Barrel/index fileProject uses barrel exports AND this file's directory doesn't already have one
Barrel updateProject uses barrel exports AND the directory already has an index file
Style file (.module.css, .styled.ts)Project uses co-located styles for this type
Storybook file (.stories.tsx)Project has stories for this type of file

Do NOT generate:

  • Empty placeholder files with only a TODO comment
  • Test files that only contain describe('...', () => { it.todo('...') })
  • Types files that only re-export from elsewhere
  • Any file type the project doesn't already use

Step 4: GENERATE THE FILES

For each file in the set, generate content by adapting the closest exemplar.

Rules:

  1. Match the exemplar's structure exactly — same section order, same patterns
  2. Replace names and specific logic, keep structural patterns
  3. Every generated file must be syntactically valid and importable
  4. No placeholder comments (// TODO: implement, // Add logic here)
  5. No empty function bodies unless the exemplar has them
  6. Minimal but functional — renders something, has at least one real method, returns a typed value
  7. Match the project's TypeScript strictness

Match the exemplar's props pattern, state management, utility imports, async patterns, and error handling exactly.

Step 5: WIRE IT IN

Find every registration point the exemplars use and add the new file there.

Common wiring points (check which ones the project uses):

Wiring PointHow to Find ItWhat to Add
Barrel exportsindex.ts in the same or parent directoryexport { NewThing } from './NewThing'
Route registrationRouter config file (search for exemplar's route)New route entry matching the pattern
Module registryBootstrap/registration fileNew registration call
Navigation/sidebarNav config arrayNew nav entry if appropriate
Lazy loading mapDynamic import mapNew lazy import entry
Type unionsDiscriminated unions that list all variantsNew variant if this is a new "type" of thing

Rules:

  1. Only wire into registration points that the exemplars actually use
  2. Match the exact format — same spacing, same trailing commas, same comments
  3. If a registration point uses alphabetical ordering, maintain it
  4. Never create new registration points — only add to existing ones

Step 6: VERIFY

Run typecheck — every generated file must pass. Fix failures before exiting. If typecheck is unavailable, do a manual read-through for syntax and import correctness.

Fringe Cases

  • Target directory or file already exists: Do not silently overwrite. Confirm with the user before proceeding. Output: "A file at {path} already exists. Overwrite it?" and wait for confirmation.
  • Template or exemplar not found: List the available file types in the codebase and ask which one to use as the exemplar. Never scaffold from memory if no exemplar exists.
  • Language or framework not detected: Ask the user directly rather than guessing. One question: "What type of file should this be? (e.g., React component, Express route, utility function)"
  • Typecheck fails after generation: Fix the issue before exiting — do not leave the user with broken generated files.
  • No wiring point found: Note the missing registration explicitly in the exit summary rather than silently leaving the file unwired.

Contextual Gates

Reversibility: Amber — creates new files and modifies registration points; git checkout to undo. Cost: No cost actions — file generation only; no agents spawned, no confirmation needed. Trust: No gates — safe at all trust levels; overwrite confirmation is in Fringe Cases.

Quality Gates

All of these must be true before the skill exits:

  • Found 2+ exemplar files of the same type in the project
  • Generated files match the project's naming convention exactly
  • Generated files match the project's import/export style exactly
  • No placeholder comments, TODO stubs, or empty function bodies
  • Every generated file is syntactically valid TypeScript/JavaScript
  • Main file is wired into the project (barrel export, route, registry, etc.)
  • Test file exists IF AND ONLY IF the project co-locates tests for this type
  • Types file exists IF AND ONLY IF the project separates types for this type
  • Typecheck passes (or manual verification if typecheck unavailable)

Exit Protocol

Output a summary in this format:

SCAFFOLD COMPLETE

Created:
  - path/to/MainFile.tsx (component)
  - path/to/MainFile.test.tsx (test)
  - path/to/MainFile.types.ts (types)

Wired into:
  - path/to/index.ts (barrel export)
  - path/to/routes.ts (route registration)

Conventions matched from:
  - path/to/ExemplarA.tsx
  - path/to/ExemplarB.tsx

Typecheck: PASS
---HANDOFF---
- Scaffolded: {name} ({type})
- Created: {N} files, wired into {N} registration points
- Conventions matched from: {exemplar names}
- Reversibility: green -- new files only, delete to undo
---

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.