@infinitedusky/indusk-mcp 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/commands/init-docs.js +27 -0
- package/package.json +1 -1
- package/skills/toolbelt.md +54 -0
|
@@ -232,6 +232,33 @@ Architecture decision records for ${projectName}. Each decision documents what w
|
|
|
232
232
|
|
|
233
233
|
Insights from building ${projectName}. Each lesson captures what we learned, what surprised us, and what we'd do differently.
|
|
234
234
|
`);
|
|
235
|
+
// Dockerfile for local dev
|
|
236
|
+
const dockerDir = join(projectRoot, "docker");
|
|
237
|
+
mkdirSync(dockerDir, { recursive: true });
|
|
238
|
+
const dockerfilePath = join(dockerDir, "Dockerfile.vitepressdev");
|
|
239
|
+
const docsAppName = `${projectName}-docs`;
|
|
240
|
+
if (!existsSync(dockerfilePath)) {
|
|
241
|
+
writeFileSync(dockerfilePath, `FROM node:22-alpine
|
|
242
|
+
|
|
243
|
+
RUN apk add --no-cache git
|
|
244
|
+
RUN corepack enable && corepack prepare pnpm@9.15.4 --activate
|
|
245
|
+
|
|
246
|
+
WORKDIR /app
|
|
247
|
+
|
|
248
|
+
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml turbo.json ./
|
|
249
|
+
COPY apps/${docsAppName}/package.json apps/${docsAppName}/
|
|
250
|
+
|
|
251
|
+
RUN pnpm install --frozen-lockfile
|
|
252
|
+
|
|
253
|
+
COPY apps/${docsAppName}/ apps/${docsAppName}/
|
|
254
|
+
|
|
255
|
+
CMD ["sh", "-c", "pnpm turbo dev --filter=${docsAppName} -- --host"]
|
|
256
|
+
`);
|
|
257
|
+
console.info(" created: docker/Dockerfile.vitepressdev");
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
console.info(" skip: docker/Dockerfile.vitepressdev (already exists)");
|
|
261
|
+
}
|
|
235
262
|
console.info(" created: package.json");
|
|
236
263
|
console.info(" created: .vitepress/config.ts (mermaid + llms plugin)");
|
|
237
264
|
console.info(" created: .vitepress/theme/index.ts");
|
package/package.json
CHANGED
package/skills/toolbelt.md
CHANGED
|
@@ -54,6 +54,60 @@ When you think a phase is complete:
|
|
|
54
54
|
- Call `get_skill_versions` to check if installed skills are current or outdated.
|
|
55
55
|
- Call `get_system_version` to verify the installed package version.
|
|
56
56
|
|
|
57
|
+
## Local Development Environment (composable.env)
|
|
58
|
+
|
|
59
|
+
composable.env manages Docker-based local development. It builds `.env` files and `docker-compose.yml` from declarative contracts and profiles. The CLI command is `ce` (always use `pnpm ce`, never `npx ce`).
|
|
60
|
+
|
|
61
|
+
### When to use composable.env
|
|
62
|
+
|
|
63
|
+
| Situation | What to do |
|
|
64
|
+
|-----------|-----------|
|
|
65
|
+
| New app needs Docker for local dev | Create a contract in `env/contracts/`, a component in `env/components/`, add to profile in `env/profiles/` |
|
|
66
|
+
| Setting up a new project | `pnpm ce init` to scaffold the env directory structure |
|
|
67
|
+
| Building environment files | `pnpm env:build` (always run before `docker compose`) |
|
|
68
|
+
| Adding a new service (database, cache, etc.) | Add a contract with `persistent: true` for services that survive rebuilds |
|
|
69
|
+
| Debugging environment issues | `pnpm ce status` to see what's configured |
|
|
70
|
+
|
|
71
|
+
### How it fits together
|
|
72
|
+
|
|
73
|
+
composable.env turns this:
|
|
74
|
+
```
|
|
75
|
+
env/
|
|
76
|
+
├── contracts/ # What each app needs (ports, env vars, Docker config)
|
|
77
|
+
├── components/ # Shared env var groups (networking, platform)
|
|
78
|
+
├── profiles/ # Which contracts run together (local, staging, prod)
|
|
79
|
+
└── ce.json # Root config
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Into this:
|
|
83
|
+
```
|
|
84
|
+
docker-compose.yml # Generated — don't edit directly
|
|
85
|
+
apps/*/. env.local # Generated — per-app env files
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Key rules
|
|
89
|
+
|
|
90
|
+
- **Always `pnpm env:build` before `docker compose`** — the generated files must be current
|
|
91
|
+
- **Always `pnpm ce`, never `npx ce`** — the workspace script ensures the right binary
|
|
92
|
+
- **Contracts are declarative** — they describe what an app needs, not how to build it
|
|
93
|
+
- **Persistent services** (`persistent: true`) survive `ce build` cycles — use for databases, FalkorDB, etc.
|
|
94
|
+
- **The docs site Dockerfile is created by `init-docs`** — it uses `docker/Dockerfile.vitepressdev`
|
|
95
|
+
|
|
96
|
+
### For new projects
|
|
97
|
+
|
|
98
|
+
When setting up a new project that needs Docker-based local dev:
|
|
99
|
+
|
|
100
|
+
1. **Install the composable-env skill first**: run `pnpm ce add-skill` to install the composable-env skill to `.claude/skills/composable-env/SKILL.md`
|
|
101
|
+
2. **Read the skill before doing anything**: the composable-env skill has full documentation on contract format, profiles, component composition, and the `ce` CLI commands. Read it completely before creating contracts or running commands.
|
|
102
|
+
3. Then follow the setup:
|
|
103
|
+
- `pnpm ce init` to scaffold the env directory
|
|
104
|
+
- Create contracts for each app in `env/contracts/`
|
|
105
|
+
- Create a `local` profile in `env/profiles/local.json`
|
|
106
|
+
- `pnpm env:build` to generate docker-compose.yml
|
|
107
|
+
- `docker compose up`
|
|
108
|
+
|
|
109
|
+
**Do NOT attempt to use composable.env without reading the skill first.** The contract format, component composition, and profile system have specific rules that aren't obvious. The skill teaches you how it works.
|
|
110
|
+
|
|
57
111
|
## Code Graph (CGC Tools)
|
|
58
112
|
|
|
59
113
|
These come from the codegraphcontext MCP server:
|