Different stacks. Same workflow.
Skills, commands, hooks, and rules with a shared structure. Keep your bearings when the framework changes.
Conventions plus a scaffolding CLI. One repo, many stacks, the same setup across my machines.
Vibe-coded personal toolbox, not a product. Copy the pattern. Own your kit.
pk new my-app --stack astro --pm pnpm 01 / Why this exists
I kept rebuilding the same agent setup for every project. This is the reusable part: opinionated conventions, a familiar feature layout, and a small CLI to put them in place.
Skills, commands, hooks, and rules with a shared structure. Keep your bearings when the framework changes.
Scaffold a runnable project with pk new, or apply the same conventions to an existing codebase with pk init.
A manifest tracks the kit’s files. Updates preserve local edits and report conflicts so you can review what changes.
02 / The approach
A shared core, a framework layer, and your own decisions on top. The same structure as the mark, carried into every project.
Your additions and local edits. Preserved when conventions change.
.claude/Framework-specific skills, commands, and a refreshable stack guide.
conventions/stacks/<id>/The shared baseline: agent workflows, rules, and a common vocabulary.
conventions/core/Feature structure inspired by Adam Bien’s Boundary–Control–Entity and AIRails. Adapted to each framework’s own folders.
03 / Supported stacks
Each stack carries its own toolchain, framework guidance, and feature layout. These are the definitions shipped in this kit.
Expo SDK, Expo Router, React Native
pk new my-app --stack expoAstro, content collections, view transitions
pk new my-app --stack astroNext.js App Router, React, Tailwind, typical full-stack TS
pk new my-app --stack nextjsSvelteKit, runes, Svelte 5
pk new my-app --stack sveltePython with uv / pytest / ruff / FastAPI
pk new my-app --stack pythonQuarkus + MicroProfile (JAX-RS, CDI, SmallRye Health) with BCE
pk new my-app --stack quarkus-microprofileGo 1.26+ with chi router, stdlib, cmd/ + internal/ layout
pk new my-app --stack goQuarkus + picocli for GraalVM native-image CLI binaries (fast startup, low memory) with BCE
pk new my-app --stack quarkus-nativeElixir 1.19+ with Phoenix 1.8, Mix, ExUnit (BCE under lib/<app>/<feature>/)
pk new my-app --stack elixir04 / Quickstart
Node 18+ or Bun 1.1+. Distributed through this repository, with no published npm package. Fork and rename it for your own workflow; replace the clone URL below with your fork.
git clone https://github.com/pclshm/pclshm-kit.git
cd pclshm-kit
./bootstrap.sh
pk --help git clone https://github.com/pclshm/pclshm-kit.git
cd pclshm-kit
.\bootstrap.ps1
pk --help Choose a stack and get a runnable BCE slice, toolchain declarations, and your agent conventions.
pk new my-app --stack astro --pm pnpm
# Or: pk new my-api --stack python The wizard detects the stack and applies conventions, preserving your project-owned files.
cd path/to/existing-project
pk init Preview changes first. Safe updates preserve local edits; conflicts stay visible for review.
pk update --check
pk update Machine defaults are separate: pk bootstrap previews existing global conventions. For the full project walkthrough, read EXAMPLE.md ↗.
05 / CLI reference
The same reference you get with pk --help. Start with a project, keep conventions in sync, or inspect the kit.
pk new <name> [--stack id] [--pm pnpm|npm|bun|yarn] [--dir parent] [--bare] [--yes] [--json]Scaffold a project with conventions and a runnable BCE slice. --yes skips every prompt; --json prints one result.
pk init [--stack id] [--yes] [--json] [--no-mise] [--git]Apply conventions to an existing project with the setup wizard, or headlessly with --yes.
pk detect [--json]Detect which stack the current directory uses and whether conventions are applied.
pk update [--yes]Refresh conventions, preserving local edits and reporting conflicts.
pk update --check [--json]Read-only convention drift report. Exit 1 means review is needed.
pk sync-backPromote local convention edits back into your kit.
pk bootstrapSet up machine defaults; preview when global conventions exist.
pk link-global [--apply] [--interactive] [--mode copy|symlink]Preview global changes. Use --apply to write, backing up conflicts.
pk plan-global [--json]Read-only global file plan (JSON by default).
pk list [--json]List available stacks.
pk stack show <id> [--json]Describe one stack: toolchain, scaffolder, seed and the conventions it installs.
pk stack new <id> [--label text] [--description text]Create a stack definition to customize.
pk stack validate [id]Validate stack definitions. Exit 1 on errors.
pk describe [--json]Read product identity and capabilities for Hub discovery.
pk mcpServe the kit as an MCP server over stdio, so an agent host (Playground) drives every feature as tools.
No matching commands. Try “stack”, “update”, or “global”.
06 / Extend it
Stacks are data. Create a definition, declare its tools, and add the skills you actually use. The CLI discovers it automatically.
pk stack new my-stack --label "My stack"
# Fill in stack.json: toolchain, detection, scaffolder.
# Add your skills and a seed slice, then validate:
pk stack validate my-stack
pk new my-app --stack my-stack 07 / The pclshm family
HUB INTEGRATION / IN PREPARATION
Kit works from your terminal today. The integration foundation lets pclshm-hub discover its version and capabilities when Hub is ready.
pk describe --json reports identity and capabilities. Hub installation and update support are still pending.