From kastell
Generates boilerplate files for Kastell CLI commands, audit checks, providers, and MCP tools, enforcing thin commands, fat core logic, and adapter architecture.
How this skill is triggered — by the user, by Claude, or both
Slash command
/kastell:kastell-scaffold [check|command|provider|mcp-tool] [name][check|command|provider|mcp-tool] [name]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Generate boilerplate files for new Kastell components. Each template follows the post-P63/P64 architecture: commands are thin wrappers, business logic lives in core/, providers handle cloud API, adapters abstract platform ops.
references/template-audit-check.mdreferences/template-command.mdreferences/template-mcp-tool.mdreferences/template-provider.mdscripts/scaffold.shtemplates/check-test.ts.tpltemplates/check.ts.tpltemplates/command-core.ts.tpltemplates/command-test.ts.tpltemplates/command.ts.tpltemplates/mcp-tool-test.ts.tpltemplates/mcp-tool.ts.tpltemplates/provider-test.ts.tpltemplates/provider.ts.tplGenerate boilerplate files for new Kastell components. Each template follows the post-P63/P64 architecture: commands are thin wrappers, business logic lives in core/, providers handle cloud API, adapters abstract platform ops.
/kastell:scaffold command server-migrate # creates command + core + test files
/kastell:scaffold check filesystem-perms # creates audit check + catalog update
/kastell:scaffold provider ovhcloud # creates provider + registry entry + test
/kastell:scaffold mcp-tool server_migrate # creates MCP tool + registration + test
$ARGUMENTS[0] is the component type. $ARGUMENTS[1] is the component name.
These rules apply in every generated file. The forked subagent does not automatically have kastell-ops context — enforce these rules explicitly.
| Layer | Path | Rule |
|---|---|---|
| Commands | src/commands/ | Parse args + delegate. ZERO business logic. |
| Core | src/core/ | ALL business logic. No chalk/ora/UI imports. |
| Providers | src/providers/ | Cloud API per provider. Extends BaseProvider. |
| Adapters | src/adapters/ | Platform ops via PlatformAdapter. Access via getAdapter(). |
| MCP | src/mcp/tools/ | Zod schema + handler. Delegates to core. |
Critical: Never import CoolifyAdapter or DokployAdapter directly. Always use getAdapter(platform) from src/adapters/factory.ts.
ESM: "type": "module" — use import, not require. All imports use .js extension.
Commands:
!node -e "import('fs').then(f=>console.log(f.readdirSync('src/commands').filter(x=>x.endsWith('.ts')).map(x=>x.replace('.ts','')).join(', '))).catch(()=>console.log('commands dir not found'))"
Providers:
!node -e "import('fs').then(f=>console.log(f.readdirSync('src/providers').filter(x=>x.endsWith('.ts')&&x!=='base.ts').map(x=>x.replace('.ts','')).join(', '))).catch(()=>console.log('providers dir not found'))"
MCP tools:
!node -e "import('fs').then(f=>console.log(f.readdirSync('src/mcp/tools').filter(x=>x.endsWith('.ts')).map(x=>x.replace('.ts','')).join(', '))).catch(()=>console.log('mcp/tools dir not found'))"
Audit categories:
!node -e "import('fs').then(f=>console.log(f.readdirSync('src/core/audit',{withFileTypes:true}).filter(d=>d.isDirectory()).map(d=>d.name).join(', '))).catch(()=>console.log('audit dir not found'))"
Run the scaffold script to generate boilerplate files:
bash scripts/scaffold.sh $ARGUMENTS[0] $ARGUMENTS[1]
The script reads .tpl templates from templates/, replaces __NAME__/__NAME_PASCAL__/__NAME_CAMEL__/__NAME_UPPER__ placeholders, and creates files in the project. Add --dry-run to preview without writing.
Files generated per type:
command → 3 files: src/commands/, src/core/, src/__tests__/core/check → 2 files: src/core/audit/checks/, src/__tests__/core/audit/checks/provider → 2 files: src/providers/, src/__tests__/providers/mcp-tool → 2 files: src/mcp/tools/, src/__tests__/mcp/After running the script, read the matching reference for registration details:
| Type | Reference File |
|---|---|
command | references/template-command.md |
check | references/template-audit-check.md |
provider | references/template-provider.md |
mcp-tool | references/template-mcp-tool.md |
Perform these steps after creating the boilerplate files:
src/index.tsregisterTool() in src/mcp/server.tsPROVIDER_REGISTRY in src/constants.tssrc/core/audit/catalog.tsnpm run build && npm test && npm run lintYeni skill veya agent oluşturulurken aşağıdaki koşullar ZORUNLU:
effort + allowed-tools ekle (minimum zorunlu)disable-model-invocation: true eklemaxTurns belirle, memory scope tanımlanpx claudepluginhub kastelldev/kastellProvides Kastell CLI architecture overview, patterns, anti-patterns, decision trees, layer rules, and adapters for codebase work or server infrastructure, provisioning, security audits, hardening.
Create project, component, or boilerplate scaffolds. Use when starting a new project, module, or component, generating boilerplate, or stamping a repeatable file structure.
Scaffolds boilerplate for APIs (FastAPI, Express), web apps (Next.js, Nuxt, SvelteKit), CLI tools, libraries, monorepos with best-practice stacks and directory structures.