This repo contains the source templates used by hackctl create.
Changes here affect future scaffolded projects. Treat template edits as product changes, not just sample code edits.
- Preserve the contract expected by the CLI in
../cli/. - Keep templates beginner-friendly and easy to run locally.
- Do not commit secrets, personal
.envfiles, or machine-specific state. - Avoid committing
node_modulesor other generated dependency directories unless the task explicitly requires it. - Local testing artifacts like
backend/.envornode_modules/are acceptable only as untracked files covered by the template.gitignore. - Update the template-local
README.mdwhen setup or behavior changes.
Each official template should include:
hackctl.config.jsonhackctl.config.jsonwith adeployblock using the current supported official values (runtime: pm2,mode: dev)- a clear service layout that matches the config
.env.examplecoverage for required environment variables- a local
README.md - a
.gitignoreentry for.hackctl/ - a root
AGENTS.mdfile as canonical AI project guidance - root
CLAUDE.mdandGEMINI.mdfiles that point toAGENTS.md - curated skills in
.agents/skills/*/SKILL.mdwith stack-appropriate defaults
Verify only what you touch. For app-level changes, run the smallest relevant commands inside the template you changed.
If you change template structure or config, check whether ../cli/ assumptions need to change too.
When using AI tools to create or update templates, treat TEMPLATE.md as the source-of-truth merge contract.
Recommended implementation order:
- Build
hackctl.config.jsonfirst. - Align folder layout with
services[].cwdandsharesettings. - Add
AGENTS.mdplusCLAUDE.mdandGEMINI.mdpointers. - Add curated
.agents/skills/*/SKILL.mdentries for the template stack. - Ensure
.gitignoreincludes.hackctl/. - For official templates, keep service run commands npm based (
npm run ...) and ensure each service has apackage.json. - Keep the template deploy block aligned with the current remote deploy contract (
runtime: pm2,mode: dev). - Add or update
.env.examplecoverage. - Ensure frontend API routing uses
/apiand the standardized Todo CRUD route contract. - Use Tailwind CSS and keep the shared Todo layout consistent with other official templates.
- Update template-local README with setup and runtime details.
- For Supabase templates, keep schema in
supabase/migrationsand document thesupabase db pushworkflow. - Plan future prod-mode work so the full app can be reached through one public service and one public port.
Contributor output expectations:
- list changed files
- list which
TEMPLATE.mdchecklist items are satisfied - list any remaining gaps before merge