@vyuhlabs/dxkit 2.4.8 → 2.5.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/CHANGELOG.md +312 -0
- package/README.md +360 -439
- package/dist/analyzers/security/aggregator.d.ts.map +1 -1
- package/dist/analyzers/security/aggregator.js +4 -46
- package/dist/analyzers/security/aggregator.js.map +1 -1
- package/dist/analyzers/tools/fingerprint.d.ts +91 -26
- package/dist/analyzers/tools/fingerprint.d.ts.map +1 -1
- package/dist/analyzers/tools/fingerprint.js +111 -22
- package/dist/analyzers/tools/fingerprint.js.map +1 -1
- package/dist/analyzers/tools/generic.d.ts.map +1 -1
- package/dist/analyzers/tools/generic.js +6 -1
- package/dist/analyzers/tools/generic.js.map +1 -1
- package/dist/analyzers/tools/gitleaks.d.ts +24 -1
- package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
- package/dist/analyzers/tools/gitleaks.js +20 -11
- package/dist/analyzers/tools/gitleaks.js.map +1 -1
- package/dist/analyzers/tools/graphify.d.ts.map +1 -1
- package/dist/analyzers/tools/graphify.js +9 -5
- package/dist/analyzers/tools/graphify.js.map +1 -1
- package/dist/analyzers/tools/tool-registry.d.ts +19 -1
- package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
- package/dist/analyzers/tools/tool-registry.js +25 -0
- package/dist/analyzers/tools/tool-registry.js.map +1 -1
- package/dist/analyzers/types.d.ts +6 -4
- package/dist/analyzers/types.d.ts.map +1 -1
- package/dist/baseline/baseline-file.d.ts +104 -0
- package/dist/baseline/baseline-file.d.ts.map +1 -0
- package/dist/baseline/baseline-file.js +110 -0
- package/dist/baseline/baseline-file.js.map +1 -0
- package/dist/baseline/check-renderers.d.ts +108 -0
- package/dist/baseline/check-renderers.d.ts.map +1 -0
- package/dist/baseline/check-renderers.js +379 -0
- package/dist/baseline/check-renderers.js.map +1 -0
- package/dist/baseline/check.d.ts +127 -0
- package/dist/baseline/check.d.ts.map +1 -0
- package/dist/baseline/check.js +462 -0
- package/dist/baseline/check.js.map +1 -0
- package/dist/baseline/content-hash.d.ts +83 -0
- package/dist/baseline/content-hash.d.ts.map +1 -0
- package/dist/baseline/content-hash.js +131 -0
- package/dist/baseline/content-hash.js.map +1 -0
- package/dist/baseline/create.d.ts +96 -0
- package/dist/baseline/create.d.ts.map +1 -0
- package/dist/baseline/create.js +339 -0
- package/dist/baseline/create.js.map +1 -0
- package/dist/baseline/entry-to-located.d.ts +35 -0
- package/dist/baseline/entry-to-located.d.ts.map +1 -0
- package/dist/baseline/entry-to-located.js +72 -0
- package/dist/baseline/entry-to-located.js.map +1 -0
- package/dist/baseline/finding-identity.d.ts +47 -0
- package/dist/baseline/finding-identity.d.ts.map +1 -0
- package/dist/baseline/finding-identity.js +292 -0
- package/dist/baseline/finding-identity.js.map +1 -0
- package/dist/baseline/git-aware-match.d.ts +146 -0
- package/dist/baseline/git-aware-match.d.ts.map +1 -0
- package/dist/baseline/git-aware-match.js +439 -0
- package/dist/baseline/git-aware-match.js.map +1 -0
- package/dist/baseline/policy.d.ts +171 -0
- package/dist/baseline/policy.d.ts.map +1 -0
- package/dist/baseline/policy.js +206 -0
- package/dist/baseline/policy.js.map +1 -0
- package/dist/baseline/producers/health.d.ts +30 -0
- package/dist/baseline/producers/health.d.ts.map +1 -0
- package/dist/baseline/producers/health.js +42 -0
- package/dist/baseline/producers/health.js.map +1 -0
- package/dist/baseline/producers/index.d.ts +164 -0
- package/dist/baseline/producers/index.d.ts.map +1 -0
- package/dist/baseline/producers/index.js +200 -0
- package/dist/baseline/producers/index.js.map +1 -0
- package/dist/baseline/producers/licenses.d.ts +23 -0
- package/dist/baseline/producers/licenses.d.ts.map +1 -0
- package/dist/baseline/producers/licenses.js +46 -0
- package/dist/baseline/producers/licenses.js.map +1 -0
- package/dist/baseline/producers/quality.d.ts +39 -0
- package/dist/baseline/producers/quality.d.ts.map +1 -0
- package/dist/baseline/producers/quality.js +84 -0
- package/dist/baseline/producers/quality.js.map +1 -0
- package/dist/baseline/producers/secret-hmac.d.ts +45 -0
- package/dist/baseline/producers/secret-hmac.d.ts.map +1 -0
- package/dist/baseline/producers/secret-hmac.js +70 -0
- package/dist/baseline/producers/secret-hmac.js.map +1 -0
- package/dist/baseline/producers/security.d.ts +59 -0
- package/dist/baseline/producers/security.d.ts.map +1 -0
- package/dist/baseline/producers/security.js +135 -0
- package/dist/baseline/producers/security.js.map +1 -0
- package/dist/baseline/producers/tests.d.ts +36 -0
- package/dist/baseline/producers/tests.d.ts.map +1 -0
- package/dist/baseline/producers/tests.js +69 -0
- package/dist/baseline/producers/tests.js.map +1 -0
- package/dist/baseline/salt.d.ts +45 -0
- package/dist/baseline/salt.d.ts.map +1 -0
- package/dist/baseline/salt.js +113 -0
- package/dist/baseline/salt.js.map +1 -0
- package/dist/baseline/show.d.ts +79 -0
- package/dist/baseline/show.d.ts.map +1 -0
- package/dist/baseline/show.js +233 -0
- package/dist/baseline/show.js.map +1 -0
- package/dist/baseline/types.d.ts +482 -0
- package/dist/baseline/types.d.ts.map +1 -0
- package/dist/baseline/types.js +53 -0
- package/dist/baseline/types.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +398 -82
- package/dist/cli.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -4
- package/dist/constants.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +39 -35
- package/dist/doctor.js.map +1 -1
- package/dist/fail-on.d.ts +84 -0
- package/dist/fail-on.d.ts.map +1 -0
- package/dist/fail-on.js +128 -0
- package/dist/fail-on.js.map +1 -0
- package/dist/generator.d.ts +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +81 -274
- package/dist/generator.js.map +1 -1
- package/dist/hooks-cli.d.ts +20 -0
- package/dist/hooks-cli.d.ts.map +1 -0
- package/dist/hooks-cli.js +145 -0
- package/dist/hooks-cli.js.map +1 -0
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +4 -9
- package/dist/languages/csharp.js.map +1 -1
- package/dist/languages/go.d.ts.map +1 -1
- package/dist/languages/go.js +3 -14
- package/dist/languages/go.js.map +1 -1
- package/dist/languages/index.d.ts +19 -1
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +32 -0
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/java.d.ts.map +1 -1
- package/dist/languages/java.js +4 -6
- package/dist/languages/java.js.map +1 -1
- package/dist/languages/kotlin.d.ts.map +1 -1
- package/dist/languages/kotlin.js +9 -11
- package/dist/languages/kotlin.js.map +1 -1
- package/dist/languages/python.d.ts.map +1 -1
- package/dist/languages/python.js +4 -15
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/ruby.d.ts.map +1 -1
- package/dist/languages/ruby.js +4 -6
- package/dist/languages/ruby.js.map +1 -1
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +4 -4
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/types.d.ts +29 -28
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +31 -4
- package/dist/languages/typescript.js.map +1 -1
- package/dist/lib.d.ts +2 -3
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -6
- package/dist/lib.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +0 -10
- package/dist/prompts.js.map +1 -1
- package/dist/report-schema.d.ts +42 -0
- package/dist/report-schema.d.ts.map +1 -0
- package/dist/report-schema.js +54 -0
- package/dist/report-schema.js.map +1 -0
- package/dist/ship-installers.d.ts +112 -0
- package/dist/ship-installers.d.ts.map +1 -0
- package/dist/ship-installers.js +530 -0
- package/dist/ship-installers.js.map +1 -0
- package/dist/tools-cli.d.ts.map +1 -1
- package/dist/tools-cli.js +45 -9
- package/dist/tools-cli.js.map +1 -1
- package/dist/types.d.ts +0 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +0 -4
- package/dist/update.js.map +1 -1
- package/package.json +17 -11
- package/templates/.claude/skills/dxkit-action/SKILL.md +150 -0
- package/templates/.claude/skills/dxkit-config/SKILL.md +124 -0
- package/templates/.claude/skills/dxkit-hooks/SKILL.md +109 -0
- package/templates/.claude/skills/dxkit-init/SKILL.md +93 -0
- package/templates/.claude/skills/dxkit-learn/SKILL.md +84 -0
- package/templates/.claude/skills/dxkit-reports/SKILL.md +111 -0
- package/templates/.devcontainer/devcontainer.json +55 -0
- package/templates/.devcontainer/install-agent-clis.sh +42 -0
- package/templates/.devcontainer/post-create.sh +81 -0
- package/templates/.githooks/pre-commit +55 -0
- package/templates/.githooks/pre-push +63 -0
- package/templates/.github/workflows/dxkit-baseline-refresh.yml +78 -0
- package/templates/.github/workflows/dxkit-guardrails.yml +98 -0
- package/templates/AGENTS.md.template +137 -0
- package/templates/CLAUDE.md.template +16 -245
- package/dist/codebase-scanner.d.ts +0 -36
- package/dist/codebase-scanner.d.ts.map +0 -1
- package/dist/codebase-scanner.js +0 -688
- package/dist/codebase-scanner.js.map +0 -1
- package/dist/project-yaml.d.ts +0 -13
- package/dist/project-yaml.d.ts.map +0 -1
- package/dist/project-yaml.js +0 -188
- package/dist/project-yaml.js.map +0 -1
- package/templates/.ai/README.md +0 -117
- package/templates/.ai/prompts/execution-prompt.md +0 -9
- package/templates/.ai/prompts/planning-prompt.md +0 -18
- package/templates/.ai/prompts/session-end-template.md +0 -182
- package/templates/.ai/prompts/session-end.md +0 -132
- package/templates/.ai/prompts/session-start.md +0 -109
- package/templates/.ai/prompts/step-by-step.md +0 -113
- package/templates/.ai/sessions/.gitkeep +0 -0
- package/templates/.claude/agents/doc-writer.md +0 -107
- package/templates/.claude/agents/knowledge-bot.md +0 -64
- package/templates/.claude/agents/onboarding.md +0 -61
- package/templates/.claude/agents/quality-reviewer.md +0 -85
- package/templates/.claude/agents-available/code-reviewer.md +0 -29
- package/templates/.claude/agents-available/codebase-explorer.md +0 -100
- package/templates/.claude/agents-available/dashboard-builder.md +0 -433
- package/templates/.claude/agents-available/debugger.md +0 -29
- package/templates/.claude/agents-available/dependency-mapper.md +0 -80
- package/templates/.claude/agents-available/dev-report.md +0 -108
- package/templates/.claude/agents-available/doc-writer.md +0 -107
- package/templates/.claude/agents-available/feature-builder.md +0 -163
- package/templates/.claude/agents-available/feature-planner.md +0 -185
- package/templates/.claude/agents-available/health-auditor.md +0 -95
- package/templates/.claude/agents-available/hooks-configurator.md +0 -211
- package/templates/.claude/agents-available/knowledge-bot.md +0 -62
- package/templates/.claude/agents-available/plan-executor.md +0 -133
- package/templates/.claude/agents-available/strategic-planner.md +0 -141
- package/templates/.claude/agents-available/test-gap-finder.md +0 -67
- package/templates/.claude/agents-available/test-writer.md +0 -34
- package/templates/.claude/agents-available/vulnerability-scanner.md +0 -173
- package/templates/.claude/commands/ask.md +0 -7
- package/templates/.claude/commands/build-feature.md +0 -26
- package/templates/.claude/commands/build.md.template +0 -30
- package/templates/.claude/commands/check.md.template +0 -43
- package/templates/.claude/commands/dashboard.md +0 -28
- package/templates/.claude/commands/deps.md +0 -15
- package/templates/.claude/commands/dev-report.md +0 -50
- package/templates/.claude/commands/docs.md +0 -21
- package/templates/.claude/commands/doctor.md +0 -21
- package/templates/.claude/commands/enable-agent.md +0 -12
- package/templates/.claude/commands/execute-plan.md +0 -25
- package/templates/.claude/commands/explore-codebase.md +0 -12
- package/templates/.claude/commands/export-pdf.md +0 -30
- package/templates/.claude/commands/feature.md +0 -25
- package/templates/.claude/commands/fix-issue.md +0 -12
- package/templates/.claude/commands/fix.md.template +0 -32
- package/templates/.claude/commands/health.md +0 -58
- package/templates/.claude/commands/help.md +0 -36
- package/templates/.claude/commands/learn.md +0 -48
- package/templates/.claude/commands/onboarding.md +0 -21
- package/templates/.claude/commands/plan.md +0 -20
- package/templates/.claude/commands/quality.md.template +0 -65
- package/templates/.claude/commands/session-end.md +0 -40
- package/templates/.claude/commands/session-start.md +0 -30
- package/templates/.claude/commands/setup-hooks.md +0 -18
- package/templates/.claude/commands/setup-pr-review.md +0 -72
- package/templates/.claude/commands/stealth-mode.md +0 -17
- package/templates/.claude/commands/test-gaps.md +0 -49
- package/templates/.claude/commands/test.md.template +0 -40
- package/templates/.claude/commands/vulnerabilities.md +0 -49
- package/templates/.claude/skills/build/SKILL.md.template +0 -98
- package/templates/.claude/skills/deploy/SKILL.md.template +0 -131
- package/templates/.claude/skills/deploy/references/gotchas.md +0 -5
- package/templates/.claude/skills/doctor/SKILL.md +0 -54
- package/templates/.claude/skills/gcloud/SKILL.md +0 -66
- package/templates/.claude/skills/gcloud/references/gotchas.md +0 -5
- package/templates/.claude/skills/learned/SKILL.md +0 -55
- package/templates/.claude/skills/learned/references/conventions.md +0 -11
- package/templates/.claude/skills/learned/references/deny-recommendations.md +0 -18
- package/templates/.claude/skills/learned/references/gotchas.md +0 -11
- package/templates/.claude/skills/pulumi/SKILL.md +0 -73
- package/templates/.claude/skills/quality/SKILL.md.template +0 -108
- package/templates/.claude/skills/quality/references/gotchas.md +0 -5
- package/templates/.claude/skills/review/SKILL.md.template +0 -73
- package/templates/.claude/skills/scaffold/SKILL.md.template +0 -123
- package/templates/.claude/skills/secrets/SKILL.md +0 -52
- package/templates/.claude/skills/session/SKILL.md +0 -43
- package/templates/.claude/skills/test/SKILL.md.template +0 -122
- package/templates/.claude/skills/test/references/gotchas.md +0 -5
- package/templates/.devcontainer/Dockerfile.dev.template +0 -89
- package/templates/.devcontainer/devcontainer.json.template +0 -184
- package/templates/.devcontainer/docker-compose.yml.template +0 -105
- package/templates/.devcontainer/init-scripts/01-init.sql.template +0 -12
- package/templates/.devcontainer/post-create.sh.template +0 -298
- package/templates/.github/workflows/ci.yml.template +0 -399
- package/templates/.github/workflows/quality.yml.template +0 -376
- package/templates/.pre-commit-config.yaml.template +0 -106
- package/templates/.project/config/edit_config.py +0 -275
- package/templates/.project/config/project_config.py +0 -894
- package/templates/.project/scripts/codegen/generate-all.sh +0 -20
- package/templates/.project/scripts/codegen/validate-all.sh +0 -17
- package/templates/.project/scripts/docs/generate-all.sh +0 -30
- package/templates/.project/scripts/docs/serve.sh +0 -20
- package/templates/.project/scripts/quality/fix-all.sh +0 -138
- package/templates/.project/scripts/quality/lint-go.sh +0 -34
- package/templates/.project/scripts/quality/lint-python.sh +0 -54
- package/templates/.project/scripts/quality/run-all.sh +0 -497
- package/templates/.project/scripts/session/commit.sh +0 -70
- package/templates/.project/scripts/session/create-pr.sh +0 -165
- package/templates/.project/scripts/session/end.sh +0 -207
- package/templates/.project/scripts/session/start.sh +0 -233
- package/templates/.project/scripts/setup/doctor.sh +0 -404
- package/templates/.project/scripts/setup/interactive-setup.sh +0 -585
- package/templates/.project/scripts/sync/sync-template.sh +0 -328
- package/templates/.project/scripts/test/run-all.sh +0 -179
- package/templates/.project/scripts/test/run-quick.sh +0 -25
- package/templates/Makefile +0 -514
- package/templates/config/versions.yaml +0 -57
- package/templates/configs/go/.golangci.yml.template +0 -172
- package/templates/configs/go/go.mod.template +0 -15
- package/templates/configs/java/README.md +0 -6
- package/templates/configs/kotlin/README.md +0 -6
- package/templates/configs/node/package.json.template +0 -67
- package/templates/configs/node/tsconfig.json.template +0 -53
- package/templates/configs/python/pyproject.toml.template +0 -92
- package/templates/configs/python/pytest.ini.template +0 -64
- package/templates/configs/python/ruff.toml.template +0 -79
- package/templates/configs/ruby/README.md +0 -6
- package/templates/configs/rust/Cargo.toml.template +0 -51
- package/templates/configs/shared/.editorconfig +0 -67
- package/templates/scripts/validate-templates.sh +0 -449
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scaffold
|
|
3
|
-
description: Scaffold new code — services, packages, modules, components. Use when asked to create new files, modules, project structure, or boilerplate.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Code Scaffolding
|
|
7
|
-
|
|
8
|
-
## Project Structure
|
|
9
|
-
- `.project.yaml` - Central config (edit via `make config`, view via `make info`)
|
|
10
|
-
- `.project/` - Framework tooling and scripts
|
|
11
|
-
- `.ai/` - AI session management and checkpoints
|
|
12
|
-
|
|
13
|
-
## Language Management
|
|
14
|
-
- `make lang-list` - Show enabled languages
|
|
15
|
-
- `make lang-add LANG=<name>` - Enable a language
|
|
16
|
-
- `make lang-remove LANG=<name>` - Disable a language
|
|
17
|
-
- `make sync` - Sync `.project.yaml` to language config files
|
|
18
|
-
- `make sync-preview` - Preview sync changes (dry run)
|
|
19
|
-
|
|
20
|
-
{{#IF_PYTHON}}
|
|
21
|
-
## Python Structure
|
|
22
|
-
```
|
|
23
|
-
services/python/<service-name>/
|
|
24
|
-
├── pyproject.toml
|
|
25
|
-
├── src/
|
|
26
|
-
│ ├── __init__.py
|
|
27
|
-
│ ├── app.py # Entry point / app factory
|
|
28
|
-
│ ├── models.py # Data models (Pydantic)
|
|
29
|
-
│ └── routes.py # API endpoints (if web)
|
|
30
|
-
└── tests/
|
|
31
|
-
├── __init__.py
|
|
32
|
-
└── test_app.py
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
**Patterns:**
|
|
36
|
-
- FastAPI for web APIs (app factory pattern)
|
|
37
|
-
- Pydantic for data validation
|
|
38
|
-
- pytest for testing
|
|
39
|
-
- See `.template/examples/python-api/` and `.template/examples/python-cli/` for reference
|
|
40
|
-
{{/IF_PYTHON}}
|
|
41
|
-
|
|
42
|
-
{{#IF_GO}}
|
|
43
|
-
## Go Structure
|
|
44
|
-
```
|
|
45
|
-
services/go/<service-name>/
|
|
46
|
-
├── go.mod
|
|
47
|
-
├── main.go # Entry point
|
|
48
|
-
├── handlers.go # HTTP handlers
|
|
49
|
-
├── handlers_test.go # Handler tests
|
|
50
|
-
└── internal/ # Private packages
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Patterns:**
|
|
54
|
-
- Standard library `net/http` for HTTP
|
|
55
|
-
- `httptest` for handler testing
|
|
56
|
-
- See `.template/examples/go-service/` for reference
|
|
57
|
-
{{/IF_GO}}
|
|
58
|
-
|
|
59
|
-
{{#IF_NEXTJS}}
|
|
60
|
-
## Next.js Structure
|
|
61
|
-
```
|
|
62
|
-
frontend/
|
|
63
|
-
├── src/
|
|
64
|
-
│ ├── app/ # App Router pages
|
|
65
|
-
│ ├── components/ # React components
|
|
66
|
-
│ └── lib/ # Utilities
|
|
67
|
-
├── public/ # Static assets
|
|
68
|
-
├── package.json
|
|
69
|
-
└── tsconfig.json
|
|
70
|
-
```
|
|
71
|
-
{{/IF_NEXTJS}}
|
|
72
|
-
|
|
73
|
-
{{#IF_NODE}}
|
|
74
|
-
## Node.js Structure
|
|
75
|
-
```
|
|
76
|
-
services/node/<service-name>/
|
|
77
|
-
├── package.json
|
|
78
|
-
├── tsconfig.json
|
|
79
|
-
├── src/
|
|
80
|
-
│ └── index.ts
|
|
81
|
-
└── tests/
|
|
82
|
-
└── index.test.ts
|
|
83
|
-
```
|
|
84
|
-
{{/IF_NODE}}
|
|
85
|
-
|
|
86
|
-
{{#IF_RUST}}
|
|
87
|
-
## Rust Structure
|
|
88
|
-
```
|
|
89
|
-
services/rust/<service-name>/
|
|
90
|
-
├── Cargo.toml
|
|
91
|
-
├── src/
|
|
92
|
-
│ ├── main.rs # Binary entry
|
|
93
|
-
│ └── lib.rs # Library code
|
|
94
|
-
└── tests/
|
|
95
|
-
└── integration.rs
|
|
96
|
-
```
|
|
97
|
-
{{/IF_RUST}}
|
|
98
|
-
|
|
99
|
-
{{#IF_CSHARP}}
|
|
100
|
-
## C# Structure
|
|
101
|
-
```
|
|
102
|
-
src/<ProjectName>/
|
|
103
|
-
├── <ProjectName>.csproj
|
|
104
|
-
├── Program.cs
|
|
105
|
-
├── Controllers/ # API controllers
|
|
106
|
-
├── Models/ # Data models
|
|
107
|
-
├── Services/ # Business logic
|
|
108
|
-
└── appsettings.json # Configuration
|
|
109
|
-
tests/<ProjectName>.Tests/
|
|
110
|
-
├── <ProjectName>.Tests.csproj
|
|
111
|
-
└── UnitTests/
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
**Patterns:**
|
|
115
|
-
- ASP.NET Core for web APIs (minimal APIs or controllers)
|
|
116
|
-
- Entity Framework Core for data access
|
|
117
|
-
- xUnit + Moq for testing
|
|
118
|
-
{{/IF_CSHARP}}
|
|
119
|
-
|
|
120
|
-
## After Scaffolding
|
|
121
|
-
1. Run `make sync` to update config files
|
|
122
|
-
2. Run `make doctor` to verify setup
|
|
123
|
-
3. Run `make test` to confirm everything works
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: secrets
|
|
3
|
-
description: Manage secrets via Infisical. Use when asked about secrets, environment variables, API keys, .env configuration, or credential management.
|
|
4
|
-
paths:
|
|
5
|
-
- '.env'
|
|
6
|
-
- '.env.*'
|
|
7
|
-
- '**/.env'
|
|
8
|
-
- '**/.env.*'
|
|
9
|
-
- '.infisical.json'
|
|
10
|
-
- '**/.infisical.json'
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
# Secrets Management (Infisical)
|
|
14
|
-
|
|
15
|
-
## Commands
|
|
16
|
-
- `make secrets-pull` - Pull secrets from Infisical to `.env`
|
|
17
|
-
- `make secrets-show` - Show Infisical configuration (**no secrets displayed**)
|
|
18
|
-
- `make setup` - Configure Infisical during initial setup
|
|
19
|
-
|
|
20
|
-
## How It Works
|
|
21
|
-
1. Infisical stores secrets centrally (encrypted, access-controlled)
|
|
22
|
-
2. `make secrets-pull` fetches secrets and merges into `.env`
|
|
23
|
-
3. `.env` is gitignored — **never commit secrets**
|
|
24
|
-
|
|
25
|
-
## Configuration
|
|
26
|
-
Required in `.env` (set during `make setup`):
|
|
27
|
-
- `INFISICAL_TOKEN` - Authentication token
|
|
28
|
-
- `INFISICAL_PROJECT_ID` - Project identifier
|
|
29
|
-
- `INFISICAL_ENV` - Environment (default: `dev`)
|
|
30
|
-
|
|
31
|
-
## Checking Configuration
|
|
32
|
-
Always use `make secrets-show` — it displays config keys without values:
|
|
33
|
-
```
|
|
34
|
-
INFISICAL_PROJECT_ID=abc123
|
|
35
|
-
INFISICAL_ENV=dev
|
|
36
|
-
INFISICAL_TOKEN=***configured***
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Security — CRITICAL
|
|
40
|
-
|
|
41
|
-
1. **NEVER read `.env` directly** — it contains plain-text secrets
|
|
42
|
-
2. **NEVER output secret values** in responses, logs, or commit messages
|
|
43
|
-
3. **NEVER include secrets** in session checkpoints or skill files
|
|
44
|
-
4. **NEVER pass secrets as CLI arguments** — they appear in process lists
|
|
45
|
-
5. **NEVER commit** `.env`, `.env.*`, or `.env.secrets`
|
|
46
|
-
6. Use `make secrets-show` to verify configuration without exposing values
|
|
47
|
-
7. If a secret is accidentally exposed, rotate it immediately
|
|
48
|
-
|
|
49
|
-
## Troubleshooting
|
|
50
|
-
- Token expired → re-authenticate via `make setup`
|
|
51
|
-
- Pull fails → check `make secrets-show` for config, verify token permissions
|
|
52
|
-
- Missing env var → check if it exists in Infisical project, correct environment
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: session
|
|
3
|
-
description: Manage AI development sessions — start, checkpoint, commit, push, create PRs. Use when asked about session workflow, checkpoints, or development workflow.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Session Management
|
|
7
|
-
|
|
8
|
-
## Workflow
|
|
9
|
-
1. `make session-start` - Start session (finds last checkpoint, generates prompts)
|
|
10
|
-
2. Work on your task using step-by-step development
|
|
11
|
-
3. `make session-end` - Create checkpoint document
|
|
12
|
-
4. `make session-commit` - Commit with quality checks
|
|
13
|
-
5. `make session-push` - Push to remote
|
|
14
|
-
6. `make session-pr` - Create PR with auto-generated content
|
|
15
|
-
|
|
16
|
-
## Key Files
|
|
17
|
-
- `.ai/prompts/session-start.md` - Planning prompt template
|
|
18
|
-
- `.ai/prompts/session-end.md` - Checkpoint creation guide
|
|
19
|
-
- `.ai/prompts/step-by-step.md` - Step-by-step development guide
|
|
20
|
-
- `.ai/templates/session-checkpoint-template.md` - Checkpoint structure
|
|
21
|
-
|
|
22
|
-
## Checkpoints
|
|
23
|
-
- Stored in: `.ai/sessions/<developer>/<date>/session-<N>.md`
|
|
24
|
-
- Auto-numbered per day
|
|
25
|
-
- Include: accomplishments, files, decisions, next steps, AI context
|
|
26
|
-
|
|
27
|
-
## Checkpoint Quality
|
|
28
|
-
A good checkpoint is specific, not vague:
|
|
29
|
-
- **Bad:** "worked on the client"
|
|
30
|
-
- **Good:** "Implemented PolygonClient with 3 endpoints, added 15 unit tests, all passing"
|
|
31
|
-
|
|
32
|
-
## Skill Evolution (during session-end)
|
|
33
|
-
After creating the checkpoint, review the session for learnings:
|
|
34
|
-
- Append gotchas to `.claude/skills/learned/references/gotchas.md`
|
|
35
|
-
- Append conventions to `.claude/skills/learned/references/conventions.md`
|
|
36
|
-
- Update area-specific gotchas in `.claude/skills/<area>/references/gotchas.md`
|
|
37
|
-
- **Create new skills** if a distinct domain/workflow emerged (new `.claude/skills/<name>/SKILL.md`)
|
|
38
|
-
|
|
39
|
-
**NEVER include secret values in checkpoints or skill files.**
|
|
40
|
-
|
|
41
|
-
## Tips
|
|
42
|
-
- `SKIP_VERIFY=1` on session-commit/push to bypass quality checks for WIP
|
|
43
|
-
- `BASE=main` on session-pr to override base branch
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: test
|
|
3
|
-
description: Run tests, check coverage, debug test failures. Use when asked to run tests, write tests, investigate test failures, or check coverage.
|
|
4
|
-
paths:
|
|
5
|
-
- '**/*.test.ts'
|
|
6
|
-
- '**/*.test.tsx'
|
|
7
|
-
- '**/*.test.js'
|
|
8
|
-
- '**/*.test.jsx'
|
|
9
|
-
- '**/*.spec.ts'
|
|
10
|
-
- '**/*.spec.tsx'
|
|
11
|
-
- '**/*.spec.js'
|
|
12
|
-
- '**/*_test.go'
|
|
13
|
-
- '**/test_*.py'
|
|
14
|
-
- '**/*_test.py'
|
|
15
|
-
- '**/tests/**'
|
|
16
|
-
- '**/__tests__/**'
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# Testing
|
|
20
|
-
|
|
21
|
-
## Commands
|
|
22
|
-
- `make test` - Run all tests (report: `tmp/reports/test-report.md`)
|
|
23
|
-
- `make test-unit` - Fast unit tests only (no coverage)
|
|
24
|
-
- `make test-quick` - Alias for test-unit
|
|
25
|
-
- `make test-integration` - Integration tests only
|
|
26
|
-
- `make test-coverage` - Detailed coverage report
|
|
27
|
-
- Coverage threshold: **{{COVERAGE_THRESHOLD}}%**
|
|
28
|
-
|
|
29
|
-
{{#IF_PYTHON}}
|
|
30
|
-
## Python
|
|
31
|
-
|
|
32
|
-
**Framework:** pytest (config: `pytest.ini`, `pyproject.toml`)
|
|
33
|
-
**Coverage:** pytest-cov
|
|
34
|
-
**Pattern:** `tests/` directories alongside source
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
pytest tests/ -v # run all
|
|
38
|
-
pytest tests/test_foo.py -v # run specific
|
|
39
|
-
pytest tests/ -k "test_name" -v # run by name
|
|
40
|
-
pytest tests/ --cov=src --cov-report=term-missing # with coverage
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Writing tests:
|
|
44
|
-
- Use fixtures for setup/teardown
|
|
45
|
-
- Use `@pytest.mark.parametrize` for data-driven tests
|
|
46
|
-
- Mock external dependencies with `unittest.mock` or `pytest-mock`
|
|
47
|
-
- Use dependency injection for testability
|
|
48
|
-
{{/IF_PYTHON}}
|
|
49
|
-
|
|
50
|
-
{{#IF_GO}}
|
|
51
|
-
## Go
|
|
52
|
-
|
|
53
|
-
**Framework:** `go test`
|
|
54
|
-
**Coverage:** `go test -coverprofile`
|
|
55
|
-
**Pattern:** `_test.go` files alongside source
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
go test ./... -v # run all
|
|
59
|
-
go test ./pkg/mypackage/ -v # run specific
|
|
60
|
-
go test ./... -run TestName -v # run by name
|
|
61
|
-
go test ./... -coverprofile=coverage.out # with coverage
|
|
62
|
-
go tool cover -html=coverage.out # view coverage
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
Writing tests:
|
|
66
|
-
- Use table-driven tests for multiple cases
|
|
67
|
-
- Use `httptest` for HTTP handler tests
|
|
68
|
-
- Use `testify/assert` if available, otherwise standard `testing`
|
|
69
|
-
{{/IF_GO}}
|
|
70
|
-
|
|
71
|
-
{{#IF_NEXTJS}}
|
|
72
|
-
## Next.js
|
|
73
|
-
|
|
74
|
-
**Framework:** Jest (if configured)
|
|
75
|
-
**Directory:** `frontend/`
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
cd frontend && npm test
|
|
79
|
-
cd frontend && npm test -- --coverage
|
|
80
|
-
```
|
|
81
|
-
{{/IF_NEXTJS}}
|
|
82
|
-
|
|
83
|
-
{{#IF_RUST}}
|
|
84
|
-
## Rust
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
cargo test # run all
|
|
88
|
-
cargo test test_name # run specific
|
|
89
|
-
cargo test -- --nocapture # show output
|
|
90
|
-
```
|
|
91
|
-
{{/IF_RUST}}
|
|
92
|
-
|
|
93
|
-
{{#IF_CSHARP}}
|
|
94
|
-
## C#
|
|
95
|
-
|
|
96
|
-
**Framework:** xUnit (preferred), NUnit, MSTest
|
|
97
|
-
**Coverage:** coverlet
|
|
98
|
-
**Pattern:** `*.Tests` projects alongside source
|
|
99
|
-
|
|
100
|
-
```bash
|
|
101
|
-
dotnet test # run all
|
|
102
|
-
dotnet test --filter "FullyQualifiedName~TestName" # run specific
|
|
103
|
-
dotnet test --collect:"XPlat Code Coverage" # with coverage
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Writing tests:
|
|
107
|
-
- Use `[Fact]` for single assertions, `[Theory]` with `[InlineData]` for data-driven
|
|
108
|
-
- Use dependency injection + mocking (Moq, NSubstitute)
|
|
109
|
-
- Follow Arrange-Act-Assert pattern
|
|
110
|
-
{{/IF_CSHARP}}
|
|
111
|
-
|
|
112
|
-
## Writing Tests
|
|
113
|
-
|
|
114
|
-
- Every new feature should include tests
|
|
115
|
-
- Aim for coverage threshold ({{COVERAGE_THRESHOLD}}%)
|
|
116
|
-
- Use dependency injection for mockability
|
|
117
|
-
- Test edge cases and error paths, not just happy paths
|
|
118
|
-
- Integration tests go in separate directories/files from unit tests
|
|
119
|
-
|
|
120
|
-
## Gotchas
|
|
121
|
-
|
|
122
|
-
See [references/gotchas.md](references/gotchas.md) for known test issues.
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Generated from template - do not edit directly
|
|
2
|
-
# Regenerate with: ./scripts/bootstrap/bootstrap.sh
|
|
3
|
-
|
|
4
|
-
FROM mcr.microsoft.com/vscode/devcontainers/base:ubuntu-22.04
|
|
5
|
-
|
|
6
|
-
# Install system dependencies
|
|
7
|
-
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
|
8
|
-
&& apt-get -y install --no-install-recommends \
|
|
9
|
-
build-essential \
|
|
10
|
-
curl \
|
|
11
|
-
git \
|
|
12
|
-
wget \
|
|
13
|
-
unzip \
|
|
14
|
-
ca-certificates \
|
|
15
|
-
jq \
|
|
16
|
-
{{#IF_POSTGRES}}
|
|
17
|
-
postgresql-client \
|
|
18
|
-
{{/IF_POSTGRES}}
|
|
19
|
-
{{#IF_REDIS}}
|
|
20
|
-
redis-tools \
|
|
21
|
-
{{/IF_REDIS}}
|
|
22
|
-
&& apt-get autoremove -y && apt-get clean -y
|
|
23
|
-
|
|
24
|
-
{{#IF_GO}}
|
|
25
|
-
# ============================================================================
|
|
26
|
-
# Go {{GO_VERSION}}
|
|
27
|
-
# ============================================================================
|
|
28
|
-
RUN wget -q https://golang.org/dl/go{{GO_VERSION}}.linux-amd64.tar.gz \
|
|
29
|
-
&& tar -C /usr/local -xzf go{{GO_VERSION}}.linux-amd64.tar.gz \
|
|
30
|
-
&& rm go{{GO_VERSION}}.linux-amd64.tar.gz
|
|
31
|
-
|
|
32
|
-
ENV PATH="/usr/local/go/bin:${PATH}"
|
|
33
|
-
ENV GOPATH="/go"
|
|
34
|
-
ENV GOBIN="/go/bin"
|
|
35
|
-
ENV PATH="${PATH}:${GOBIN}"
|
|
36
|
-
|
|
37
|
-
# Create Go workspace
|
|
38
|
-
RUN mkdir -p /go/src /go/bin /go/pkg && chmod -R 777 /go
|
|
39
|
-
|
|
40
|
-
{{/IF_GO}}
|
|
41
|
-
{{#IF_PYTHON}}
|
|
42
|
-
# ============================================================================
|
|
43
|
-
# Python {{PYTHON_VERSION}}
|
|
44
|
-
# ============================================================================
|
|
45
|
-
# Note: We use ensurepip instead of apt's python3-pip because:
|
|
46
|
-
# 1. It installs pip for the specific Python version, not the system Python
|
|
47
|
-
# 2. Python 3.12+ removed distutils which breaks the system pip package
|
|
48
|
-
RUN apt-get update && apt-get install -y software-properties-common \
|
|
49
|
-
&& add-apt-repository ppa:deadsnakes/ppa -y \
|
|
50
|
-
&& apt-get update \
|
|
51
|
-
&& apt-get install -y \
|
|
52
|
-
python{{PYTHON_VERSION}} \
|
|
53
|
-
python{{PYTHON_VERSION}}-dev \
|
|
54
|
-
python{{PYTHON_VERSION}}-venv \
|
|
55
|
-
&& update-alternatives --install /usr/bin/python3 python3 /usr/bin/python{{PYTHON_VERSION}} 1 \
|
|
56
|
-
&& update-alternatives --install /usr/bin/python python /usr/bin/python{{PYTHON_VERSION}} 1 \
|
|
57
|
-
&& python{{PYTHON_VERSION}} -m ensurepip --upgrade \
|
|
58
|
-
&& python{{PYTHON_VERSION}} -m pip install --upgrade pip
|
|
59
|
-
|
|
60
|
-
{{/IF_PYTHON}}
|
|
61
|
-
{{#IF_NODE}}
|
|
62
|
-
# ============================================================================
|
|
63
|
-
# Node.js {{NODE_VERSION}}
|
|
64
|
-
# ============================================================================
|
|
65
|
-
RUN curl -fsSL https://deb.nodesource.com/setup_{{NODE_VERSION}}.x | bash - \
|
|
66
|
-
&& apt-get install -y nodejs
|
|
67
|
-
|
|
68
|
-
{{/IF_NODE}}
|
|
69
|
-
{{#IF_RUST}}
|
|
70
|
-
# ============================================================================
|
|
71
|
-
# Rust {{RUST_VERSION}}
|
|
72
|
-
# ============================================================================
|
|
73
|
-
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain {{RUST_VERSION}}
|
|
74
|
-
ENV PATH="/root/.cargo/bin:${PATH}"
|
|
75
|
-
|
|
76
|
-
{{/IF_RUST}}
|
|
77
|
-
# ============================================================================
|
|
78
|
-
# Utility Tools
|
|
79
|
-
# ============================================================================
|
|
80
|
-
|
|
81
|
-
# Install yq for YAML processing
|
|
82
|
-
RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \
|
|
83
|
-
&& chmod +x /usr/local/bin/yq
|
|
84
|
-
|
|
85
|
-
# Set the default user
|
|
86
|
-
USER vscode
|
|
87
|
-
|
|
88
|
-
# Set working directory
|
|
89
|
-
WORKDIR /workspaces/{{PROJECT_NAME}}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "{{PROJECT_NAME}} Development Environment",
|
|
3
|
-
"dockerComposeFile": "docker-compose.yml",
|
|
4
|
-
"service": "dev-environment",
|
|
5
|
-
"workspaceFolder": "/workspaces/{{PROJECT_NAME}}",
|
|
6
|
-
"shutdownAction": "stopCompose",
|
|
7
|
-
|
|
8
|
-
"features": {
|
|
9
|
-
"ghcr.io/devcontainers/features/sshd:1": {
|
|
10
|
-
"version": "latest"
|
|
11
|
-
},
|
|
12
|
-
"ghcr.io/devcontainers/features/git:1": {
|
|
13
|
-
"version": "latest",
|
|
14
|
-
"ppa": false
|
|
15
|
-
}{{#IF_DOCKER}},
|
|
16
|
-
"ghcr.io/devcontainers/features/docker-in-docker:2": {
|
|
17
|
-
"version": "latest",
|
|
18
|
-
"moby": true,
|
|
19
|
-
"dockerDashComposeVersion": "v2"
|
|
20
|
-
}{{/IF_DOCKER}}
|
|
21
|
-
},
|
|
22
|
-
|
|
23
|
-
"postCreateCommand": "bash .devcontainer/post-create.sh",
|
|
24
|
-
|
|
25
|
-
"customizations": {
|
|
26
|
-
"vscode": {
|
|
27
|
-
"extensions": [
|
|
28
|
-
"ms-azuretools.vscode-docker",
|
|
29
|
-
"ms-vscode.makefile-tools",
|
|
30
|
-
"EditorConfig.EditorConfig",
|
|
31
|
-
"eamodio.gitlens",
|
|
32
|
-
"usernamehw.errorlens",
|
|
33
|
-
"gruntfuggly.todo-tree",
|
|
34
|
-
{{#IF_CLAUDE_CODE}}
|
|
35
|
-
"anthropic.claude-code",
|
|
36
|
-
{{/IF_CLAUDE_CODE}}
|
|
37
|
-
{{#IF_PYTHON}}
|
|
38
|
-
"ms-python.python",
|
|
39
|
-
"ms-python.vscode-pylance",
|
|
40
|
-
"charliermarsh.ruff",
|
|
41
|
-
"ms-python.black-formatter",
|
|
42
|
-
{{/IF_PYTHON}}
|
|
43
|
-
{{#IF_GO}}
|
|
44
|
-
"golang.go",
|
|
45
|
-
{{/IF_GO}}
|
|
46
|
-
{{#IF_NODE}}
|
|
47
|
-
"dbaeumer.vscode-eslint",
|
|
48
|
-
"esbenp.prettier-vscode",
|
|
49
|
-
{{/IF_NODE}}
|
|
50
|
-
{{#IF_NEXTJS}}
|
|
51
|
-
"bradlc.vscode-tailwindcss",
|
|
52
|
-
"csstools.postcss",
|
|
53
|
-
{{/IF_NEXTJS}}
|
|
54
|
-
{{#IF_RUST}}
|
|
55
|
-
"rust-lang.rust-analyzer",
|
|
56
|
-
{{/IF_RUST}}
|
|
57
|
-
{{#IF_POSTGRES}}
|
|
58
|
-
"mtxr.sqltools",
|
|
59
|
-
"mtxr.sqltools-driver-pg",
|
|
60
|
-
{{/IF_POSTGRES}}
|
|
61
|
-
{{#IF_REDIS}}
|
|
62
|
-
"cweijan.vscode-redis-client",
|
|
63
|
-
{{/IF_REDIS}}
|
|
64
|
-
"redhat.vscode-yaml",
|
|
65
|
-
"yzhang.markdown-all-in-one"
|
|
66
|
-
],
|
|
67
|
-
"settings": {
|
|
68
|
-
"terminal.integrated.defaultProfile.linux": "bash",
|
|
69
|
-
"terminal.integrated.scrollback": 10000,
|
|
70
|
-
"editor.formatOnSave": true,
|
|
71
|
-
"editor.rulers": [88, 120],
|
|
72
|
-
"editor.tabSize": 4,
|
|
73
|
-
"editor.insertSpaces": true,
|
|
74
|
-
"files.trimTrailingWhitespace": true,
|
|
75
|
-
"files.insertFinalNewline": true,
|
|
76
|
-
{{#IF_PYTHON}}
|
|
77
|
-
"python.defaultInterpreterPath": "/usr/bin/python{{PYTHON_VERSION}}",
|
|
78
|
-
"python.formatting.provider": "none",
|
|
79
|
-
"[python]": {
|
|
80
|
-
"editor.defaultFormatter": "charliermarsh.ruff",
|
|
81
|
-
"editor.formatOnSave": true,
|
|
82
|
-
"editor.codeActionsOnSave": {
|
|
83
|
-
"source.fixAll.ruff": "explicit",
|
|
84
|
-
"source.organizeImports.ruff": "explicit"
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
{{/IF_PYTHON}}
|
|
88
|
-
{{#IF_GO}}
|
|
89
|
-
"go.gopath": "/go",
|
|
90
|
-
"go.goroot": "/usr/local/go",
|
|
91
|
-
"go.formatTool": "goimports",
|
|
92
|
-
"go.lintTool": "golangci-lint",
|
|
93
|
-
"go.lintOnSave": "package",
|
|
94
|
-
"[go]": {
|
|
95
|
-
"editor.formatOnSave": true,
|
|
96
|
-
"editor.codeActionsOnSave": {
|
|
97
|
-
"source.organizeImports": "explicit"
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
{{/IF_GO}}
|
|
101
|
-
{{#IF_NODE}}
|
|
102
|
-
"[javascript]": {
|
|
103
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
104
|
-
},
|
|
105
|
-
"[typescript]": {
|
|
106
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
107
|
-
},
|
|
108
|
-
"[json]": {
|
|
109
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
110
|
-
},
|
|
111
|
-
{{/IF_NODE}}
|
|
112
|
-
{{#IF_NEXTJS}}
|
|
113
|
-
"[typescriptreact]": {
|
|
114
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
115
|
-
},
|
|
116
|
-
"[css]": {
|
|
117
|
-
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
|
118
|
-
},
|
|
119
|
-
"tailwindCSS.includeLanguages": {
|
|
120
|
-
"typescript": "javascript",
|
|
121
|
-
"typescriptreact": "javascript"
|
|
122
|
-
},
|
|
123
|
-
{{/IF_NEXTJS}}
|
|
124
|
-
{{#IF_RUST}}
|
|
125
|
-
"[rust]": {
|
|
126
|
-
"editor.formatOnSave": true,
|
|
127
|
-
"editor.defaultFormatter": "rust-lang.rust-analyzer"
|
|
128
|
-
},
|
|
129
|
-
"rust-analyzer.checkOnSave.command": "clippy",
|
|
130
|
-
{{/IF_RUST}}
|
|
131
|
-
{{#IF_POSTGRES}}
|
|
132
|
-
"sqltools.connections": [
|
|
133
|
-
{
|
|
134
|
-
"name": "{{PROJECT_NAME}} Dev DB",
|
|
135
|
-
"driver": "PostgreSQL",
|
|
136
|
-
"server": "db",
|
|
137
|
-
"port": 5432,
|
|
138
|
-
"database": "{{DB_NAME}}",
|
|
139
|
-
"username": "{{DB_USER}}",
|
|
140
|
-
"password": "{{DB_PASSWORD}}"
|
|
141
|
-
}
|
|
142
|
-
],
|
|
143
|
-
{{/IF_POSTGRES}}
|
|
144
|
-
"files.associations": {
|
|
145
|
-
"*.env*": "dotenv",
|
|
146
|
-
"Makefile*": "makefile"
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
|
|
152
|
-
"forwardPorts": [
|
|
153
|
-
8080,
|
|
154
|
-
3000{{#IF_POSTGRES}},
|
|
155
|
-
5432{{/IF_POSTGRES}}{{#IF_REDIS}},
|
|
156
|
-
6379{{/IF_REDIS}}
|
|
157
|
-
],
|
|
158
|
-
|
|
159
|
-
"portsAttributes": {
|
|
160
|
-
"8080": {
|
|
161
|
-
"label": "API Server",
|
|
162
|
-
"onAutoForward": "notify"
|
|
163
|
-
},
|
|
164
|
-
"3000": {
|
|
165
|
-
"label": "Frontend Dev Server",
|
|
166
|
-
"onAutoForward": "notify"
|
|
167
|
-
}{{#IF_POSTGRES}},
|
|
168
|
-
"5432": {
|
|
169
|
-
"label": "PostgreSQL",
|
|
170
|
-
"onAutoForward": "silent"
|
|
171
|
-
}{{/IF_POSTGRES}}{{#IF_REDIS}},
|
|
172
|
-
"6379": {
|
|
173
|
-
"label": "Redis",
|
|
174
|
-
"onAutoForward": "silent"
|
|
175
|
-
}{{/IF_REDIS}}
|
|
176
|
-
},
|
|
177
|
-
|
|
178
|
-
"containerEnv": {
|
|
179
|
-
"PROJECT_NAME": "{{PROJECT_NAME}}",
|
|
180
|
-
"ENVIRONMENT": "development"
|
|
181
|
-
},
|
|
182
|
-
|
|
183
|
-
"remoteUser": "vscode"
|
|
184
|
-
}
|