@wooojin/forgen 0.1.0
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/.claude-plugin/plugin.json +20 -0
- package/CHANGELOG.md +353 -0
- package/CONTRIBUTING.md +98 -0
- package/LICENSE +21 -0
- package/README.ja.md +469 -0
- package/README.ko.md +469 -0
- package/README.md +483 -0
- package/README.zh.md +469 -0
- package/agents/analyst.md +98 -0
- package/agents/architect.md +62 -0
- package/agents/code-reviewer.md +120 -0
- package/agents/code-simplifier.md +197 -0
- package/agents/critic.md +70 -0
- package/agents/debugger.md +117 -0
- package/agents/designer.md +131 -0
- package/agents/executor.md +54 -0
- package/agents/explore.md +145 -0
- package/agents/git-master.md +212 -0
- package/agents/performance-reviewer.md +172 -0
- package/agents/planner.md +29 -0
- package/agents/qa-tester.md +158 -0
- package/agents/refactoring-expert.md +168 -0
- package/agents/scientist.md +144 -0
- package/agents/security-reviewer.md +137 -0
- package/agents/test-engineer.md +153 -0
- package/agents/verifier.md +133 -0
- package/agents/writer.md +184 -0
- package/commands/api-design.md +268 -0
- package/commands/architecture-decision.md +314 -0
- package/commands/ci-cd.md +270 -0
- package/commands/code-review.md +233 -0
- package/commands/compound.md +117 -0
- package/commands/database.md +263 -0
- package/commands/debug-detective.md +99 -0
- package/commands/docker.md +274 -0
- package/commands/documentation.md +276 -0
- package/commands/ecomode.md +51 -0
- package/commands/frontend.md +271 -0
- package/commands/git-master.md +90 -0
- package/commands/incident-response.md +292 -0
- package/commands/migrate.md +101 -0
- package/commands/performance.md +288 -0
- package/commands/refactor.md +105 -0
- package/commands/security-review.md +288 -0
- package/commands/tdd.md +183 -0
- package/commands/testing-strategy.md +265 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +295 -0
- package/dist/core/auto-compound-runner.d.ts +12 -0
- package/dist/core/auto-compound-runner.js +460 -0
- package/dist/core/config-hooks.d.ts +10 -0
- package/dist/core/config-hooks.js +112 -0
- package/dist/core/config-injector.d.ts +50 -0
- package/dist/core/config-injector.js +455 -0
- package/dist/core/doctor.d.ts +1 -0
- package/dist/core/doctor.js +163 -0
- package/dist/core/errors.d.ts +81 -0
- package/dist/core/errors.js +133 -0
- package/dist/core/global-config.d.ts +43 -0
- package/dist/core/global-config.js +25 -0
- package/dist/core/harness.d.ts +24 -0
- package/dist/core/harness.js +621 -0
- package/dist/core/init.d.ts +7 -0
- package/dist/core/init.js +37 -0
- package/dist/core/inspect-cli.d.ts +7 -0
- package/dist/core/inspect-cli.js +47 -0
- package/dist/core/legacy-detector.d.ts +33 -0
- package/dist/core/legacy-detector.js +66 -0
- package/dist/core/logger.d.ts +34 -0
- package/dist/core/logger.js +121 -0
- package/dist/core/mcp-config.d.ts +44 -0
- package/dist/core/mcp-config.js +177 -0
- package/dist/core/notepad.d.ts +31 -0
- package/dist/core/notepad.js +88 -0
- package/dist/core/paths.d.ts +85 -0
- package/dist/core/paths.js +101 -0
- package/dist/core/plugin-detector.d.ts +44 -0
- package/dist/core/plugin-detector.js +226 -0
- package/dist/core/runtime-detector.d.ts +8 -0
- package/dist/core/runtime-detector.js +49 -0
- package/dist/core/scope-resolver.d.ts +8 -0
- package/dist/core/scope-resolver.js +45 -0
- package/dist/core/session-logger.d.ts +6 -0
- package/dist/core/session-logger.js +111 -0
- package/dist/core/session-store.d.ts +28 -0
- package/dist/core/session-store.js +218 -0
- package/dist/core/settings-lock.d.ts +18 -0
- package/dist/core/settings-lock.js +125 -0
- package/dist/core/spawn.d.ts +3 -0
- package/dist/core/spawn.js +135 -0
- package/dist/core/types.d.ts +108 -0
- package/dist/core/types.js +1 -0
- package/dist/core/uninstall.d.ts +4 -0
- package/dist/core/uninstall.js +307 -0
- package/dist/core/v1-bootstrap.d.ts +26 -0
- package/dist/core/v1-bootstrap.js +155 -0
- package/dist/engine/compound-cli.d.ts +24 -0
- package/dist/engine/compound-cli.js +250 -0
- package/dist/engine/compound-extractor.d.ts +68 -0
- package/dist/engine/compound-extractor.js +860 -0
- package/dist/engine/compound-lifecycle.d.ts +32 -0
- package/dist/engine/compound-lifecycle.js +305 -0
- package/dist/engine/compound-loop.d.ts +32 -0
- package/dist/engine/compound-loop.js +511 -0
- package/dist/engine/match-eval-log.d.ts +139 -0
- package/dist/engine/match-eval-log.js +270 -0
- package/dist/engine/phrase-blocklist.d.ts +119 -0
- package/dist/engine/phrase-blocklist.js +208 -0
- package/dist/engine/skill-promoter.d.ts +20 -0
- package/dist/engine/skill-promoter.js +115 -0
- package/dist/engine/solution-format.d.ts +160 -0
- package/dist/engine/solution-format.js +432 -0
- package/dist/engine/solution-index.d.ts +13 -0
- package/dist/engine/solution-index.js +252 -0
- package/dist/engine/solution-matcher.d.ts +364 -0
- package/dist/engine/solution-matcher.js +656 -0
- package/dist/engine/solution-writer.d.ts +76 -0
- package/dist/engine/solution-writer.js +157 -0
- package/dist/engine/term-matcher.d.ts +81 -0
- package/dist/engine/term-matcher.js +268 -0
- package/dist/engine/term-normalizer.d.ts +116 -0
- package/dist/engine/term-normalizer.js +171 -0
- package/dist/fgx.d.ts +6 -0
- package/dist/fgx.js +42 -0
- package/dist/forge/cli.d.ts +11 -0
- package/dist/forge/cli.js +100 -0
- package/dist/forge/evidence-processor.d.ts +21 -0
- package/dist/forge/evidence-processor.js +87 -0
- package/dist/forge/mismatch-detector.d.ts +44 -0
- package/dist/forge/mismatch-detector.js +83 -0
- package/dist/forge/onboarding-cli.d.ts +6 -0
- package/dist/forge/onboarding-cli.js +89 -0
- package/dist/forge/onboarding.d.ts +25 -0
- package/dist/forge/onboarding.js +122 -0
- package/dist/hooks/compound-reflection.d.ts +45 -0
- package/dist/hooks/compound-reflection.js +82 -0
- package/dist/hooks/context-guard.d.ts +24 -0
- package/dist/hooks/context-guard.js +156 -0
- package/dist/hooks/dangerous-patterns.json +18 -0
- package/dist/hooks/db-guard.d.ts +17 -0
- package/dist/hooks/db-guard.js +105 -0
- package/dist/hooks/hook-config.d.ts +29 -0
- package/dist/hooks/hook-config.js +92 -0
- package/dist/hooks/hook-registry.d.ts +43 -0
- package/dist/hooks/hook-registry.js +31 -0
- package/dist/hooks/hooks-generator.d.ts +49 -0
- package/dist/hooks/hooks-generator.js +99 -0
- package/dist/hooks/intent-classifier.d.ts +12 -0
- package/dist/hooks/intent-classifier.js +62 -0
- package/dist/hooks/keyword-detector.d.ts +25 -0
- package/dist/hooks/keyword-detector.js +389 -0
- package/dist/hooks/notepad-injector.d.ts +18 -0
- package/dist/hooks/notepad-injector.js +51 -0
- package/dist/hooks/permission-handler.d.ts +14 -0
- package/dist/hooks/permission-handler.js +114 -0
- package/dist/hooks/post-tool-failure.d.ts +11 -0
- package/dist/hooks/post-tool-failure.js +118 -0
- package/dist/hooks/post-tool-handlers.d.ts +17 -0
- package/dist/hooks/post-tool-handlers.js +115 -0
- package/dist/hooks/post-tool-use.d.ts +29 -0
- package/dist/hooks/post-tool-use.js +151 -0
- package/dist/hooks/pre-compact.d.ts +10 -0
- package/dist/hooks/pre-compact.js +165 -0
- package/dist/hooks/pre-tool-use.d.ts +31 -0
- package/dist/hooks/pre-tool-use.js +325 -0
- package/dist/hooks/prompt-injection-filter.d.ts +56 -0
- package/dist/hooks/prompt-injection-filter.js +287 -0
- package/dist/hooks/rate-limiter.d.ts +21 -0
- package/dist/hooks/rate-limiter.js +86 -0
- package/dist/hooks/secret-filter.d.ts +14 -0
- package/dist/hooks/secret-filter.js +65 -0
- package/dist/hooks/session-recovery.d.ts +27 -0
- package/dist/hooks/session-recovery.js +406 -0
- package/dist/hooks/shared/atomic-write.d.ts +41 -0
- package/dist/hooks/shared/atomic-write.js +148 -0
- package/dist/hooks/shared/context-budget.d.ts +37 -0
- package/dist/hooks/shared/context-budget.js +45 -0
- package/dist/hooks/shared/file-lock.d.ts +56 -0
- package/dist/hooks/shared/file-lock.js +253 -0
- package/dist/hooks/shared/hook-response.d.ts +33 -0
- package/dist/hooks/shared/hook-response.js +62 -0
- package/dist/hooks/shared/injection-caps.d.ts +39 -0
- package/dist/hooks/shared/injection-caps.js +52 -0
- package/dist/hooks/shared/plugin-signal.d.ts +23 -0
- package/dist/hooks/shared/plugin-signal.js +104 -0
- package/dist/hooks/shared/read-stdin.d.ts +8 -0
- package/dist/hooks/shared/read-stdin.js +63 -0
- package/dist/hooks/shared/sanitize-id.d.ts +7 -0
- package/dist/hooks/shared/sanitize-id.js +9 -0
- package/dist/hooks/shared/sanitize.d.ts +7 -0
- package/dist/hooks/shared/sanitize.js +22 -0
- package/dist/hooks/skill-injector.d.ts +38 -0
- package/dist/hooks/skill-injector.js +285 -0
- package/dist/hooks/slop-detector.d.ts +18 -0
- package/dist/hooks/slop-detector.js +93 -0
- package/dist/hooks/solution-injector.d.ts +58 -0
- package/dist/hooks/solution-injector.js +436 -0
- package/dist/hooks/subagent-tracker.d.ts +10 -0
- package/dist/hooks/subagent-tracker.js +90 -0
- package/dist/i18n/index.d.ts +43 -0
- package/dist/i18n/index.js +224 -0
- package/dist/lib.d.ts +14 -0
- package/dist/lib.js +14 -0
- package/dist/mcp/server.d.ts +8 -0
- package/dist/mcp/server.js +40 -0
- package/dist/mcp/solution-reader.d.ts +90 -0
- package/dist/mcp/solution-reader.js +273 -0
- package/dist/mcp/tools.d.ts +16 -0
- package/dist/mcp/tools.js +302 -0
- package/dist/preset/facet-catalog.d.ts +17 -0
- package/dist/preset/facet-catalog.js +46 -0
- package/dist/preset/preset-manager.d.ts +31 -0
- package/dist/preset/preset-manager.js +111 -0
- package/dist/renderer/inspect-renderer.d.ts +11 -0
- package/dist/renderer/inspect-renderer.js +123 -0
- package/dist/renderer/rule-renderer.d.ts +18 -0
- package/dist/renderer/rule-renderer.js +159 -0
- package/dist/store/evidence-store.d.ts +23 -0
- package/dist/store/evidence-store.js +58 -0
- package/dist/store/profile-store.d.ts +12 -0
- package/dist/store/profile-store.js +53 -0
- package/dist/store/recommendation-store.d.ts +22 -0
- package/dist/store/recommendation-store.js +64 -0
- package/dist/store/rule-store.d.ts +22 -0
- package/dist/store/rule-store.js +62 -0
- package/dist/store/session-state-store.d.ts +11 -0
- package/dist/store/session-state-store.js +44 -0
- package/dist/store/types.d.ts +159 -0
- package/dist/store/types.js +7 -0
- package/hooks/hook-registry.json +21 -0
- package/hooks/hooks.json +185 -0
- package/package.json +89 -0
- package/plugin.json +20 -0
- package/scripts/postinstall.js +826 -0
- package/skills/api-design/SKILL.md +262 -0
- package/skills/architecture-decision/SKILL.md +309 -0
- package/skills/ci-cd/SKILL.md +264 -0
- package/skills/code-review/SKILL.md +228 -0
- package/skills/compound/SKILL.md +101 -0
- package/skills/database/SKILL.md +257 -0
- package/skills/debug-detective/SKILL.md +95 -0
- package/skills/docker/SKILL.md +268 -0
- package/skills/documentation/SKILL.md +270 -0
- package/skills/ecomode/SKILL.md +46 -0
- package/skills/frontend/SKILL.md +265 -0
- package/skills/git-master/SKILL.md +86 -0
- package/skills/incident-response/SKILL.md +286 -0
- package/skills/migrate/SKILL.md +96 -0
- package/skills/performance/SKILL.md +282 -0
- package/skills/refactor/SKILL.md +100 -0
- package/skills/security-review/SKILL.md +282 -0
- package/skills/tdd/SKILL.md +178 -0
- package/skills/testing-strategy/SKILL.md +260 -0
- package/starter-pack/solutions/starter-api-error-responses.md +37 -0
- package/starter-pack/solutions/starter-async-patterns.md +40 -0
- package/starter-pack/solutions/starter-caching-strategy.md +40 -0
- package/starter-pack/solutions/starter-code-review-checklist.md +39 -0
- package/starter-pack/solutions/starter-debugging-systematic.md +40 -0
- package/starter-pack/solutions/starter-dependency-injection.md +40 -0
- package/starter-pack/solutions/starter-error-handling-patterns.md +38 -0
- package/starter-pack/solutions/starter-git-atomic-commits.md +36 -0
- package/starter-pack/solutions/starter-input-validation.md +40 -0
- package/starter-pack/solutions/starter-n-plus-one-queries.md +37 -0
- package/starter-pack/solutions/starter-refactor-safely.md +38 -0
- package/starter-pack/solutions/starter-secret-management.md +37 -0
- package/starter-pack/solutions/starter-separation-of-concerns.md +36 -0
- package/starter-pack/solutions/starter-tdd-red-green-refactor.md +40 -0
- package/starter-pack/solutions/starter-typescript-strict-types.md +39 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: starter-secret-management
|
|
3
|
+
version: 1
|
|
4
|
+
status: verified
|
|
5
|
+
confidence: 0.70
|
|
6
|
+
type: pattern
|
|
7
|
+
scope: me
|
|
8
|
+
tags:
|
|
9
|
+
- security
|
|
10
|
+
- secret
|
|
11
|
+
- env
|
|
12
|
+
- api-key
|
|
13
|
+
- credential
|
|
14
|
+
- 보안
|
|
15
|
+
- 시크릿
|
|
16
|
+
identifiers: []
|
|
17
|
+
evidence:
|
|
18
|
+
injected: 0
|
|
19
|
+
reflected: 0
|
|
20
|
+
negative: 0
|
|
21
|
+
sessions: 0
|
|
22
|
+
reExtracted: 0
|
|
23
|
+
created: "2026-04-03"
|
|
24
|
+
updated: "2026-04-03"
|
|
25
|
+
supersedes: null
|
|
26
|
+
extractedBy: manual
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Context
|
|
30
|
+
Hardcoded secrets in source code are the top cause of credential leaks. Once in git history, a secret is compromised — deleting it later doesn't remove it from history.
|
|
31
|
+
|
|
32
|
+
## Content
|
|
33
|
+
**Never put secrets in source code.** Use env vars as baseline. Validate required vars at startup — fail fast if missing. Commit `.env.example` with placeholder values, gitignore all real `.env` files.
|
|
34
|
+
|
|
35
|
+
**Escalation**: Local dev uses `.env`. Production uses a secret manager (AWS Secrets Manager, Vault, Doppler) with IAM access.
|
|
36
|
+
|
|
37
|
+
**If leaked**: (1) Rotate immediately. (2) Audit access logs. (3) Remove from history with `git filter-repo`. (4) Assume compromised from moment of commit.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: starter-separation-of-concerns
|
|
3
|
+
version: 1
|
|
4
|
+
status: verified
|
|
5
|
+
confidence: 0.70
|
|
6
|
+
type: pattern
|
|
7
|
+
scope: me
|
|
8
|
+
tags:
|
|
9
|
+
- architecture
|
|
10
|
+
- separation
|
|
11
|
+
- pure
|
|
12
|
+
- function
|
|
13
|
+
- 관심사분리
|
|
14
|
+
- 아키텍처
|
|
15
|
+
identifiers: []
|
|
16
|
+
evidence:
|
|
17
|
+
injected: 0
|
|
18
|
+
reflected: 0
|
|
19
|
+
negative: 0
|
|
20
|
+
sessions: 0
|
|
21
|
+
reExtracted: 0
|
|
22
|
+
created: "2026-04-03"
|
|
23
|
+
updated: "2026-04-03"
|
|
24
|
+
supersedes: null
|
|
25
|
+
extractedBy: manual
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Context
|
|
29
|
+
When business logic is entangled with HTTP, database, and logging, testing requires the entire stack and changes to one concern break others.
|
|
30
|
+
|
|
31
|
+
## Content
|
|
32
|
+
Separate by dependency: **Pure logic** (no I/O, trivially testable) / **I/O adapters** (thin DB/HTTP wrappers) / **Orchestration** (glues pure + I/O with async/await and error handling).
|
|
33
|
+
|
|
34
|
+
Pure functions take data in, return data out — no mocks needed for testing. Adapters convert external formats to domain types. Orchestration is thin glue that's already tested through its components.
|
|
35
|
+
|
|
36
|
+
**Test strategy**: Unit test pure logic exhaustively (fast). Integration test adapters. Orchestration needs minimal tests.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: starter-tdd-red-green-refactor
|
|
3
|
+
version: 1
|
|
4
|
+
status: verified
|
|
5
|
+
confidence: 0.70
|
|
6
|
+
type: pattern
|
|
7
|
+
scope: me
|
|
8
|
+
tags:
|
|
9
|
+
- tdd
|
|
10
|
+
- test
|
|
11
|
+
- workflow
|
|
12
|
+
- red-green-refactor
|
|
13
|
+
- 테스트
|
|
14
|
+
- 테스트주도개발
|
|
15
|
+
identifiers: []
|
|
16
|
+
evidence:
|
|
17
|
+
injected: 0
|
|
18
|
+
reflected: 0
|
|
19
|
+
negative: 0
|
|
20
|
+
sessions: 0
|
|
21
|
+
reExtracted: 0
|
|
22
|
+
created: "2026-04-03"
|
|
23
|
+
updated: "2026-04-03"
|
|
24
|
+
supersedes: null
|
|
25
|
+
extractedBy: manual
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Context
|
|
29
|
+
Writing code first and testing later creates coverage gaps. TDD inverts this: prove the requirement as a failing test before writing production code.
|
|
30
|
+
|
|
31
|
+
## Content
|
|
32
|
+
**Red**: Write the smallest failing test. **Green**: Write minimum code to pass. **Refactor**: Clean up while tests stay green.
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
// RED: it('returns 0 for empty cart', () => expect(calculateTotal([])).toBe(0));
|
|
36
|
+
// GREEN: const calculateTotal = (items: CartItem[]) => items.reduce((s,i) => s+i.price*i.qty, 0);
|
|
37
|
+
// REFACTOR: improve naming, extract helpers — re-run tests after each change
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Rules: (1) No production code without a failing test. (2) Only enough to fail. (3) Only enough to pass. (4) Refactor only when green.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: starter-typescript-strict-types
|
|
3
|
+
version: 1
|
|
4
|
+
status: verified
|
|
5
|
+
confidence: 0.70
|
|
6
|
+
type: pattern
|
|
7
|
+
scope: me
|
|
8
|
+
tags:
|
|
9
|
+
- typescript
|
|
10
|
+
- type
|
|
11
|
+
- strict
|
|
12
|
+
- any
|
|
13
|
+
- union
|
|
14
|
+
- 타입
|
|
15
|
+
- 타입스크립트
|
|
16
|
+
identifiers: []
|
|
17
|
+
evidence:
|
|
18
|
+
injected: 0
|
|
19
|
+
reflected: 0
|
|
20
|
+
negative: 0
|
|
21
|
+
sessions: 0
|
|
22
|
+
reExtracted: 0
|
|
23
|
+
created: "2026-04-03"
|
|
24
|
+
updated: "2026-04-03"
|
|
25
|
+
supersedes: null
|
|
26
|
+
extractedBy: manual
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Context
|
|
30
|
+
Using `any` silences the compiler at the cost of runtime errors. Discriminated unions make complex state type-safe and self-documenting.
|
|
31
|
+
|
|
32
|
+
## Content
|
|
33
|
+
**Eliminate `any`** — use `unknown` + type guards when type is genuinely unknown.
|
|
34
|
+
|
|
35
|
+
**Discriminated unions** for mutually exclusive states:
|
|
36
|
+
```typescript
|
|
37
|
+
type State<T> = { status:'idle' } | { status:'loading' } | { status:'ok'; data:T } | { status:'error'; error:Error };
|
|
38
|
+
```
|
|
39
|
+
Compiler enforces `data` only exists on `ok`, `error` only on `error`. Prefer `satisfies` over type assertions — validates shape without widening.
|