About project-engineering
An engineering baseline skill for HeyEddi Vue apps that can add frontend, FastAPI backend, and Firebase tooling according to project configuration. It organizes development through scaffold audits, tests, and change checks, and stores generated documents under .heyeddi/.
Key features
- 01Configures Vue, FastAPI, and Firebase as needed
- 02Audits and fills scaffold gaps
- 03Coordinates tests and engineering checks
- 04Records project preferences and stack
- 05Stores skill documents under .heyeddi/docs/
Use cases
- 01Filling in development setup for an existing app
- 02Starting local Vue, FastAPI, or Firebase services
- 03Checking an engineering plan before implementation
- 04Running tests and build gates before merging
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ heyeddi-com/ heyeddi-skills --skill project-engineeringAfter installing, type/project-engineeringin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
manifest.jsonreference.mdcontext/ANTI_PATTERNS.mdEXAMPLES.mdPROSE_ANTI_SLOP.mdVOCABULARY.mdreference/dev-server.mdfastapi-backend.mdfirebase-backend.mdsubagents.mdscaffold/gitignore-heyeddi-pr-scratch.snippetstack-fastapi.jsonstack-firebase.jsonstack-full.jsonscaffold/fastapi/openapi.jsonpyproject.tomlscaffold/fastapi/app/__init__.pymain.pyscaffold/fastapi/tests/test_health.pyscaffold/firebase/.env.firebase.example.firebasercfirebase.jsonfirestore.indexes.jsonfirestore.rulesscaffold/heyeddi/design.mdproduct.mdREADME.mdstack.jsonscaffold/heyeddi/docs/README.mdscaffold/vue/DESIGN.mdDetails
From the project READMEProject Engineering
Baseline code engineering for HeyEddi Vue apps. For Flutter frontends use @flutter-engineering instead. Detects which stacks apply and adds the correct tooling: not one-size-fits-all.
Subagents (default)
Delegate scaffold/audit/test scripts to Task shell; repo discovery to explore. Main chat picks stack from audit JSON. See reference/subagents.md.
Stacks
| Stack | When | Tooling added |
|---|---|---|
| Vue | Always for frontend work | Vite, Vitest, npm scripts, router |
| FastAPI | REST API backend | backend/, pytest, openapi.json, uvicorn |
| Firebase | Firestore / Auth client | firebase.json, rules, emulators, env template |
Declare intent prefs via @heyeddi-setup (git/env + agent). Tech keys in .heyeddi/stack.json are filled by scaffold / this skill as the project evolves:
{
"frontend": "vue",
"backends": ["fastapi"],
"api_port": 8090,
"web_port": 8085,
"git": {
"preset": "main_staging_dev",
"default_branch": "dev",
"pr_base": "dev",
"environments": { "production": "main", "staging": "staging", "dev": "dev" },
"worktrees": false,
"custom_workflow": null
},
"agent": { "commit": "ask", "push": "ask" },
"setup": { "version": 1, "updated": "2026-09-06" }
}
{ "frontend": "vue", "backends": ["fastapi"], "api_port": 8090 }
Flutter projects: "frontend": "flutter", "web_port": 8085: see @flutter-engineering.
Or "backends": ["firebase"] or ["fastapi", "firebase"].
audit_scaffold also infers from openapi.json, firestore.rules, and .heyeddi/product.md (or legacy PRODUCT.md).
.heyeddi/ workspace
Every HeyEddi app should have a .heyeddi/ folder (created by scaffold_stack / scaffold_heyeddi):
| Path | Purpose |
|---|---|
README.md | HeyEddi intro (agents + humans workspace), free skills, heyeddi.com/humans |
stack.json | Stack + prefs (@heyeddi-setup) |
product.md | Product brief |
design.md | DESIGN.md format: tokens, rationale, Decision log |
designs/<feature>/ | Handoff PNGs, briefs, wireframes |
docs/ | Skill-generated reports (ship, PR tracking, drift audits) |
Save all skill-created documents under .heyeddi/docs/ (or the paths above) so the team can reference them later. Root PRODUCT.md / DESIGN.md / designs/ remain supported as legacy fallbacks.
Workflow
- Prefs gate (always-on hard):
@heyeddi-setupverify_setup --checkbefore git/CI/commit assumptions; incomplete → run setup until pass. audit_scaffold: per-layer JSON (vue / fastapi / firebase).scaffold_stack --stack auto: fills gaps (preferred overscaffold_vuealone).ensure_npm+ensure_pythonas needed.dev_server_info: all local servers (Vue :5173, API :8090, Firebase emulators :4000).- Plan gate (always-on):
@engineering-excellencecheck_engineering_plan --checkbefore feature code; read reuse-catalog. - Implement features (design skills, composables, etc.).
write_test_stub+run_tests+run_backend_tests.- Change gate (always-on):
audit_engineering --check(errors fail; warns advisory). verify-build+pre-merge-gate.
Local dev servers
| Stack | Command | URL |
|---|---|---|
| Vue | npm run dev | http://localhost:5173 |
| FastAPI | cd backend && poetry run uvicorn app.main:app --reload --port 8090 | http://localhost:8090/docs |
| Firebase | firebase emulators:start | http://localhost:4000 (UI) |
Run dev_server_info for project-specific steps. Each server needs its own terminal.
References
reference/dev-server.md: Vuereference/fastapi-backend.md: FastAPIreference/firebase-backend.md: Firebase emulators
Related skills
backend-type-bridger: OpenAPI / Firestore → TypeScript typescomposable-patterns: FastAPI JWT vs Firebase client composablesverify-build: production frontend build
When the task is complete: suggest next skills
When you have finished the user's request for this skill (not after every tool call or subagent phase), suggest what to run next:
-
Run:
python .agents/skills/heyeddi/scripts/suggest_next_skill.py --current-skill project-engineering --project-root .Add
--route /pathif you worked a specific route. -
Include the script's
### Next stepblock in your final reply. The user copies the Prompt line into chat (e.g.@heyeddi-design craft /settings).
Pass --mode shape (or craft, audit, etc.) when you know which sub-command just finished.
See @heyeddi → reference/next-skill-handoff.md.