timsquad 2.0.0 → 3.3.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/README.md +168 -234
- package/dist/commands/daemon.d.ts +7 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +140 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/feedback.d.ts +9 -0
- package/dist/commands/feedback.d.ts.map +1 -1
- package/dist/commands/feedback.js +251 -11
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/full.js +2 -2
- package/dist/commands/full.js.map +1 -1
- package/dist/commands/git/commit.d.ts.map +1 -1
- package/dist/commands/git/commit.js +1 -4
- package/dist/commands/git/commit.js.map +1 -1
- package/dist/commands/improve.d.ts +3 -0
- package/dist/commands/improve.d.ts.map +1 -0
- package/dist/commands/improve.js +286 -0
- package/dist/commands/improve.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +110 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/knowledge.d.ts +3 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +316 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/log.d.ts +27 -0
- package/dist/commands/log.d.ts.map +1 -1
- package/dist/commands/log.js +1167 -2
- package/dist/commands/log.js.map +1 -1
- package/dist/commands/meta-index.d.ts +3 -0
- package/dist/commands/meta-index.d.ts.map +1 -0
- package/dist/commands/meta-index.js +401 -0
- package/dist/commands/meta-index.js.map +1 -0
- package/dist/commands/metrics.d.ts.map +1 -1
- package/dist/commands/metrics.js +640 -100
- package/dist/commands/metrics.js.map +1 -1
- package/dist/commands/retro.d.ts.map +1 -1
- package/dist/commands/retro.js +606 -58
- package/dist/commands/retro.js.map +1 -1
- package/dist/commands/session.d.ts +3 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +346 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/upgrade.d.ts +8 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +287 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/workflow.d.ts +3 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +607 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/daemon/context-writer.d.ts +16 -0
- package/dist/daemon/context-writer.d.ts.map +1 -0
- package/dist/daemon/context-writer.js +35 -0
- package/dist/daemon/context-writer.js.map +1 -0
- package/dist/daemon/entry.d.ts +7 -0
- package/dist/daemon/entry.d.ts.map +1 -0
- package/dist/daemon/entry.js +17 -0
- package/dist/daemon/entry.js.map +1 -0
- package/dist/daemon/event-queue.d.ts +52 -0
- package/dist/daemon/event-queue.d.ts.map +1 -0
- package/dist/daemon/event-queue.js +255 -0
- package/dist/daemon/event-queue.js.map +1 -0
- package/dist/daemon/file-watcher.d.ts +19 -0
- package/dist/daemon/file-watcher.d.ts.map +1 -0
- package/dist/daemon/file-watcher.js +87 -0
- package/dist/daemon/file-watcher.js.map +1 -0
- package/dist/daemon/index.d.ts +28 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +204 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/jsonl-watcher.d.ts +49 -0
- package/dist/daemon/jsonl-watcher.d.ts.map +1 -0
- package/dist/daemon/jsonl-watcher.js +258 -0
- package/dist/daemon/jsonl-watcher.js.map +1 -0
- package/dist/daemon/meta-cache.d.ts +62 -0
- package/dist/daemon/meta-cache.d.ts.map +1 -0
- package/dist/daemon/meta-cache.js +240 -0
- package/dist/daemon/meta-cache.js.map +1 -0
- package/dist/daemon/shutdown.d.ts +21 -0
- package/dist/daemon/shutdown.d.ts.map +1 -0
- package/dist/daemon/shutdown.js +158 -0
- package/dist/daemon/shutdown.js.map +1 -0
- package/dist/index.js +24 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-composer.d.ts +38 -0
- package/dist/lib/agent-composer.d.ts.map +1 -0
- package/dist/lib/agent-composer.js +128 -0
- package/dist/lib/agent-composer.js.map +1 -0
- package/dist/lib/agent-generator.d.ts +22 -0
- package/dist/lib/agent-generator.d.ts.map +1 -0
- package/dist/lib/agent-generator.js +150 -0
- package/dist/lib/agent-generator.js.map +1 -0
- package/dist/lib/ast-parser.d.ts +11 -0
- package/dist/lib/ast-parser.d.ts.map +1 -0
- package/dist/lib/ast-parser.js +282 -0
- package/dist/lib/ast-parser.js.map +1 -0
- package/dist/lib/config.d.ts +6 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +27 -3
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/meta-index.d.ts +19 -0
- package/dist/lib/meta-index.d.ts.map +1 -0
- package/dist/lib/meta-index.js +573 -0
- package/dist/lib/meta-index.js.map +1 -0
- package/dist/lib/project.js +1 -1
- package/dist/lib/project.js.map +1 -1
- package/dist/lib/skill-generator.d.ts +32 -0
- package/dist/lib/skill-generator.d.ts.map +1 -0
- package/dist/lib/skill-generator.js +187 -0
- package/dist/lib/skill-generator.js.map +1 -0
- package/dist/lib/template.d.ts +16 -2
- package/dist/lib/template.d.ts.map +1 -1
- package/dist/lib/template.js +175 -21
- package/dist/lib/template.js.map +1 -1
- package/dist/lib/ui-index.d.ts +12 -0
- package/dist/lib/ui-index.d.ts.map +1 -0
- package/dist/lib/ui-index.js +239 -0
- package/dist/lib/ui-index.js.map +1 -0
- package/dist/lib/ui-parser.d.ts +12 -0
- package/dist/lib/ui-parser.d.ts.map +1 -0
- package/dist/lib/ui-parser.js +472 -0
- package/dist/lib/ui-parser.js.map +1 -0
- package/dist/lib/update-check.d.ts +6 -0
- package/dist/lib/update-check.d.ts.map +1 -0
- package/dist/lib/update-check.js +121 -0
- package/dist/lib/update-check.js.map +1 -0
- package/dist/lib/upgrade-backup.d.ts +33 -0
- package/dist/lib/upgrade-backup.d.ts.map +1 -0
- package/dist/lib/upgrade-backup.js +101 -0
- package/dist/lib/upgrade-backup.js.map +1 -0
- package/dist/lib/version.d.ts +19 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +35 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/lib/workflow-state.d.ts +48 -0
- package/dist/lib/workflow-state.d.ts.map +1 -0
- package/dist/lib/workflow-state.js +67 -0
- package/dist/lib/workflow-state.js.map +1 -0
- package/dist/types/config.d.ts +102 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +173 -9
- package/dist/types/config.js.map +1 -1
- package/dist/types/feedback.d.ts +59 -1
- package/dist/types/feedback.d.ts.map +1 -1
- package/dist/types/feedback.js +1 -4
- package/dist/types/feedback.js.map +1 -1
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/meta-index.d.ts +146 -0
- package/dist/types/meta-index.d.ts.map +1 -0
- package/dist/types/meta-index.js +7 -0
- package/dist/types/meta-index.js.map +1 -0
- package/dist/types/project.d.ts +19 -3
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/project.js +24 -1
- package/dist/types/project.js.map +1 -1
- package/dist/types/task-log.d.ts +208 -0
- package/dist/types/task-log.d.ts.map +1 -0
- package/dist/types/task-log.js +6 -0
- package/dist/types/task-log.js.map +1 -0
- package/dist/types/ui-meta.d.ts +118 -0
- package/dist/types/ui-meta.d.ts.map +1 -0
- package/dist/types/ui-meta.js +7 -0
- package/dist/types/ui-meta.js.map +1 -0
- package/package.json +12 -4
- package/templates/base/agents/base/tsq-architect.md +68 -0
- package/templates/base/agents/base/tsq-dba.md +56 -0
- package/templates/base/agents/base/tsq-designer.md +72 -0
- package/templates/base/agents/base/tsq-developer.md +67 -0
- package/templates/base/agents/base/tsq-qa.md +55 -0
- package/templates/base/agents/base/tsq-security.md +65 -0
- package/templates/base/agents/overlays/domain/general-web/_common.md +11 -0
- package/templates/base/agents/overlays/platform/claude-code.md +12 -0
- package/templates/base/config.template.yaml +213 -0
- package/templates/base/knowledge/checklists/accessibility.md +37 -0
- package/templates/base/knowledge/checklists/architecture-review.md +28 -0
- package/templates/base/knowledge/checklists/database-standards.md +84 -0
- package/templates/base/knowledge/checklists/design-reference.md +97 -0
- package/templates/base/knowledge/checklists/security.md +50 -0
- package/templates/base/knowledge/checklists/ssot-validation.md +19 -0
- package/templates/base/knowledge/domains/_template.md +16 -0
- package/templates/base/knowledge/platforms/_template.md +16 -0
- package/templates/base/knowledge/templates/sequence-report.md +44 -0
- package/templates/base/knowledge/templates/task-result.md +105 -0
- package/templates/base/skills/_template/SKILL.md +59 -0
- package/templates/base/skills/_template/references/_template.md +35 -0
- package/templates/base/skills/_template/rules/_sections.md +34 -0
- package/templates/base/skills/_template/rules/_template.md +32 -0
- package/templates/base/skills/_template/scripts/_template.sh +31 -0
- package/templates/base/skills/architecture/SKILL.md +54 -0
- package/templates/base/skills/architecture/references/adr-template.md +50 -0
- package/templates/base/skills/architecture/references/api-design.md +64 -0
- package/templates/base/skills/backend/node/SKILL.md +81 -0
- package/templates/base/skills/backend/node/rules/async-patterns.md +81 -0
- package/templates/base/skills/backend/node/rules/deployment.md +33 -0
- package/templates/base/skills/backend/node/rules/env-config.md +41 -0
- package/templates/base/skills/backend/node/rules/error-handling.md +83 -0
- package/templates/base/skills/backend/node/rules/hono-app-setup.md +98 -0
- package/templates/base/skills/backend/node/rules/jwt-auth.md +76 -0
- package/templates/base/skills/backend/node/rules/middleware.md +56 -0
- package/templates/base/skills/backend/node/rules/testing.md +82 -0
- package/templates/base/skills/coding/SKILL.md +47 -0
- package/templates/base/skills/coding/rules/patterns.md +81 -0
- package/templates/base/skills/database/SKILL.md +98 -0
- package/templates/base/skills/database/prisma/SKILL.md +57 -0
- package/templates/base/skills/database/prisma/rules/queries.md +133 -0
- package/templates/base/skills/database/prisma/rules/schema-design.md +80 -0
- package/templates/base/skills/frontend/nextjs/SKILL.md +59 -0
- package/templates/base/skills/frontend/nextjs/rules/app-router.md +138 -0
- package/templates/base/skills/frontend/react/SKILL.md +86 -0
- package/templates/base/skills/frontend/react/rules/_sections.md +88 -0
- package/templates/base/skills/frontend/react/rules/anti-patterns.md +67 -0
- package/templates/base/skills/frontend/react/rules/async-api-routes.md +38 -0
- package/templates/base/skills/frontend/react/rules/async-defer-await.md +80 -0
- package/templates/base/skills/frontend/react/rules/async-dependencies.md +36 -0
- package/templates/base/skills/frontend/react/rules/async-parallel.md +28 -0
- package/templates/base/skills/frontend/react/rules/async-suspense-boundaries.md +99 -0
- package/templates/base/skills/frontend/react/rules/bundle-barrel-imports.md +59 -0
- package/templates/base/skills/frontend/react/rules/bundle-defer-third-party.md +49 -0
- package/templates/base/skills/frontend/react/rules/bundle-dynamic-imports.md +35 -0
- package/templates/base/skills/frontend/react/rules/component-conventions.md +74 -0
- package/templates/base/skills/frontend/react/rules/js-combine-iterations.md +32 -0
- package/templates/base/skills/frontend/react/rules/js-early-exit.md +50 -0
- package/templates/base/skills/frontend/react/rules/js-index-maps.md +37 -0
- package/templates/base/skills/frontend/react/rules/js-set-map-lookups.md +24 -0
- package/templates/base/skills/frontend/react/rules/rendering-conditional-render.md +40 -0
- package/templates/base/skills/frontend/react/rules/rendering-content-visibility.md +38 -0
- package/templates/base/skills/frontend/react/rules/rendering-hoist-jsx.md +46 -0
- package/templates/base/skills/frontend/react/rules/rerender-defer-reads.md +39 -0
- package/templates/base/skills/frontend/react/rules/rerender-derived-state.md +29 -0
- package/templates/base/skills/frontend/react/rules/rerender-memo.md +44 -0
- package/templates/base/skills/frontend/react/rules/rerender-transitions.md +40 -0
- package/templates/base/skills/frontend/react/rules/server-after-nonblocking.md +73 -0
- package/templates/base/skills/frontend/react/rules/server-cache-react.md +26 -0
- package/templates/base/skills/frontend/react/rules/server-parallel-fetching.md +79 -0
- package/templates/base/skills/frontend/react/rules/state-location.md +55 -0
- package/templates/base/skills/methodology/bdd/SKILL.md +69 -0
- package/templates/base/skills/methodology/bdd/rules/gherkin-patterns.md +113 -0
- package/templates/base/skills/methodology/ddd/SKILL.md +74 -0
- package/templates/base/skills/methodology/ddd/rules/strategic-patterns.md +98 -0
- package/templates/base/skills/methodology/debugging/SKILL.md +60 -0
- package/templates/base/skills/methodology/debugging/references/root-cause-tracing.md +84 -0
- package/templates/base/skills/methodology/tdd/SKILL.md +66 -0
- package/templates/base/skills/methodology/tdd/rules/real-world-example.md +88 -0
- package/templates/base/skills/methodology/tdd/rules/techniques.md +185 -0
- package/templates/base/skills/planning/SKILL.md +58 -0
- package/templates/base/skills/planning/references/prd-guide.md +47 -0
- package/templates/base/skills/planning/references/requirements-guide.md +46 -0
- package/templates/base/skills/prompt-engineering/SKILL.md +103 -0
- package/templates/base/skills/retrospective/SKILL.md +102 -0
- package/templates/base/skills/security/SKILL.md +55 -0
- package/templates/base/skills/security/rules/owasp-examples.md +119 -0
- package/templates/base/skills/security/scripts/check-secrets.sh +55 -0
- package/templates/base/skills/testing/SKILL.md +63 -0
- package/templates/base/skills/testing/references/testing-patterns.md +103 -0
- package/templates/base/skills/tsq-protocol/SKILL.md +51 -0
- package/templates/base/skills/typescript/SKILL.md +67 -0
- package/templates/base/skills/typescript/rules/type-patterns.md +135 -0
- package/templates/base/skills/typescript/rules/utility-types.md +76 -0
- package/templates/base/skills/ui-design/SKILL.md +70 -0
- package/templates/{common → base}/timsquad/feedback/routing-rules.yaml +1 -1
- package/templates/base/timsquad/process/phase-checklist.yaml +174 -0
- package/templates/{common → base}/timsquad/process/state-machine.xml +12 -0
- package/templates/{common → base}/timsquad/process/workflow-base.xml +124 -0
- package/templates/{common → base}/timsquad/retrospective/metrics/metrics-schema.json +46 -1
- package/templates/platforms/claude-code/CLAUDE.md.template +64 -0
- package/templates/platforms/claude-code/rules/adr-rules.md +32 -0
- package/templates/platforms/claude-code/rules/feedback-routing.md +18 -0
- package/templates/platforms/claude-code/rules/phase-management.md +23 -0
- package/templates/platforms/claude-code/rules/reporting-format.md +26 -0
- package/templates/platforms/claude-code/rules/sequence-management.md +72 -0
- package/templates/platforms/claude-code/rules/workspace-sync.md +33 -0
- package/templates/platforms/claude-code/settings.json +26 -0
- package/templates/project-types/api-backend/config.yaml +227 -0
- package/templates/project-types/api-backend/process/workflow.xml +214 -0
- package/templates/project-types/fintech/config.yaml +151 -0
- package/templates/project-types/fintech/process/workflow.xml +316 -0
- package/templates/project-types/infra/config.yaml +327 -0
- package/templates/project-types/infra/process/workflow.xml +296 -0
- package/templates/project-types/platform/config.yaml +254 -0
- package/templates/project-types/platform/process/workflow.xml +254 -0
- package/templates/project-types/web-app/config.yaml +198 -0
- package/templates/project-types/web-app/process/workflow.xml +210 -0
- package/templates/project-types/web-service/config.yaml +136 -0
- package/templates/project-types/web-service/process/workflow.xml +184 -0
- package/templates/common/CLAUDE.md.template +0 -254
- package/templates/common/claude/agents/tsq-dba.md +0 -290
- package/templates/common/claude/agents/tsq-designer.md +0 -304
- package/templates/common/claude/agents/tsq-developer.md +0 -118
- package/templates/common/claude/agents/tsq-planner.md +0 -90
- package/templates/common/claude/agents/tsq-prompter.md +0 -336
- package/templates/common/claude/agents/tsq-qa.md +0 -134
- package/templates/common/claude/agents/tsq-retro.md +0 -168
- package/templates/common/claude/agents/tsq-security.md +0 -190
- package/templates/common/claude/skills/architecture/SKILL.md +0 -123
- package/templates/common/claude/skills/backend/node/SKILL.md +0 -1015
- package/templates/common/claude/skills/coding/SKILL.md +0 -171
- package/templates/common/claude/skills/database/prisma/SKILL.md +0 -357
- package/templates/common/claude/skills/frontend/nextjs/SKILL.md +0 -279
- package/templates/common/claude/skills/frontend/react/SKILL.md +0 -1729
- package/templates/common/claude/skills/methodology/bdd/SKILL.md +0 -234
- package/templates/common/claude/skills/methodology/ddd/SKILL.md +0 -311
- package/templates/common/claude/skills/methodology/tdd/SKILL.md +0 -512
- package/templates/common/claude/skills/planning/SKILL.md +0 -90
- package/templates/common/claude/skills/security/SKILL.md +0 -234
- package/templates/common/claude/skills/testing/SKILL.md +0 -146
- package/templates/common/claude/skills/typescript/SKILL.md +0 -435
- package/templates/common/config.template.yaml +0 -131
- /package/templates/{common → base}/timsquad/architectures/clean/ARCHITECTURE.md +0 -0
- /package/templates/{common → base}/timsquad/architectures/clean/backend.xml +0 -0
- /package/templates/{common → base}/timsquad/architectures/clean/frontend.xml +0 -0
- /package/templates/{common → base}/timsquad/architectures/fsd/ARCHITECTURE.md +0 -0
- /package/templates/{common → base}/timsquad/architectures/fsd/frontend.xml +0 -0
- /package/templates/{common → base}/timsquad/architectures/hexagonal/ARCHITECTURE.md +0 -0
- /package/templates/{common → base}/timsquad/architectures/hexagonal/backend.xml +0 -0
- /package/templates/{common → base}/timsquad/constraints/competency-framework.xml +0 -0
- /package/templates/{common → base}/timsquad/constraints/ssot-schema.xml +0 -0
- /package/templates/{common → base}/timsquad/feedback/feedback-router.sh +0 -0
- /package/templates/{common → base}/timsquad/generators/data-design.xml +0 -0
- /package/templates/{common → base}/timsquad/generators/prd.xml +0 -0
- /package/templates/{common → base}/timsquad/generators/requirements.xml +0 -0
- /package/templates/{common → base}/timsquad/generators/service-spec.xml +0 -0
- /package/templates/{common → base}/timsquad/logs/_example.md +0 -0
- /package/templates/{common → base}/timsquad/logs/_template.md +0 -0
- /package/templates/{common → base}/timsquad/patterns/cqrs.xml +0 -0
- /package/templates/{common → base}/timsquad/patterns/event-sourcing.xml +0 -0
- /package/templates/{common → base}/timsquad/patterns/repository.xml +0 -0
- /package/templates/{common → base}/timsquad/process/validation-rules.xml +0 -0
- /package/templates/{common → base}/timsquad/retrospective/cycle-report.template.md +0 -0
- /package/templates/{common → base}/timsquad/retrospective/patterns/failure-patterns.md +0 -0
- /package/templates/{common → base}/timsquad/retrospective/patterns/success-patterns.md +0 -0
- /package/templates/{common → base}/timsquad/retrospective/retrospective-config.xml +0 -0
- /package/templates/{common → base}/timsquad/retrospective/retrospective-state.xml +0 -0
- /package/templates/{common → base}/timsquad/ssot/adr/ADR-000-template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/adr/ADR-001-example.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/data-design.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/deployment-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/env-config.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/error-codes.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/functional-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/glossary.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/integration-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/planning.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/prd.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/requirements.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/security-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/service-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/test-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/ssot/ui-ux-spec.template.md +0 -0
- /package/templates/{common → base}/timsquad/state/workspace.xml +0 -0
package/README.md
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/timsquad_banner.png" alt="TimSquad" width="100%">
|
|
3
|
+
</p>
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
SSOT 기반 문서 체계, 최적화된 에이전트 롤, 회고적 학습을 통해 Claude Code에서 지속적으로 개선되는 고품질 소프트웨어 생성 프레임워크
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Vibe Development Framework</strong><br>
|
|
7
|
+
SSOT 기반 문서 체계, 최적화된 에이전트 롤, 회고적 학습을 통해 Claude Code에서 지속적으로 개선되는 고품질 소프트웨어 생성 프레임워크
|
|
8
|
+
</p>
|
|
6
9
|
|
|
7
10
|
```
|
|
8
11
|
최적화된 롤 정의 + 고도화된 스킬 + 회고적 학습 = 지속적으로 개선되는 고품질 결과물
|
|
@@ -12,12 +15,13 @@ SSOT 기반 문서 체계, 최적화된 에이전트 롤, 회고적 학습을
|
|
|
12
15
|
|
|
13
16
|
## Why TimSquad?
|
|
14
17
|
|
|
15
|
-
|
|
|
16
|
-
|
|
17
|
-
| "Zero learning curve" | **"체계를 세우면 더 잘 된다"** |
|
|
18
|
-
| 알아서
|
|
19
|
-
| 속도
|
|
20
|
-
|
|
|
18
|
+
| | 일반적 접근 | **TimSquad** |
|
|
19
|
+
|---|---------|------------|
|
|
20
|
+
| 철학 | "Zero learning curve" | **"체계를 세우면 더 잘 된다"** |
|
|
21
|
+
| 의사결정 | LLM이 알아서 | **개발자가 컨트롤** |
|
|
22
|
+
| 우선순위 | 속도 | **품질 + 일관성** |
|
|
23
|
+
| 반복 작업 | LLM이 처리 (토큰 소비) | **프로그램이 처리 (토큰 0)** |
|
|
24
|
+
| 학습 | 없음 | **회고적 학습으로 지속 개선** |
|
|
21
25
|
|
|
22
26
|
**For developers who want structure, not magic.**
|
|
23
27
|
|
|
@@ -27,250 +31,218 @@ SSOT 기반 문서 체계, 최적화된 에이전트 롤, 회고적 학습을
|
|
|
27
31
|
- 1인 CTO / 테크 리드 (혼자서 팀 수준의 품질 필요)
|
|
28
32
|
- 문서화와 일관성을 중시하는 개발자
|
|
29
33
|
|
|
30
|
-
### NOT for
|
|
31
|
-
|
|
32
|
-
- "알아서 해줘" 원하는 사람 → oh-my-claudecode 추천
|
|
33
|
-
- 코딩만 빠르게 하고 싶은 사람 → Claude Code 그냥 사용
|
|
34
|
-
|
|
35
34
|
---
|
|
36
35
|
|
|
37
|
-
##
|
|
38
|
-
|
|
39
|
-
### SSOT (Single Source of Truth)
|
|
40
|
-
|
|
41
|
-
모든 에이전트가 참조하는 단일 문서 체계
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
.timsquad/ssot/
|
|
45
|
-
├── prd.md # 제품 요구사항 (Why)
|
|
46
|
-
├── requirements.md # 요건 정의 (What)
|
|
47
|
-
├── service-spec.md # API 명세 (프론트-백 계약서)
|
|
48
|
-
├── data-design.md # ERD, 데이터 설계
|
|
49
|
-
└── ...
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
### 분수(Fountain) 모델
|
|
53
|
-
|
|
54
|
-
SSOT는 순차적 의존성, 실제 작업은 병렬 실행
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
SSOT (순차: PRD → 기획 → 설계)
|
|
58
|
-
│
|
|
59
|
-
┌────┼────┐
|
|
60
|
-
↓ ↓ ↓
|
|
61
|
-
화면 요건 API ← 병렬 작업
|
|
62
|
-
│ │ │
|
|
63
|
-
└────┼────┘
|
|
64
|
-
↓
|
|
65
|
-
ERD + 구현 (병렬)
|
|
66
|
-
↓
|
|
67
|
-
QA/Test
|
|
68
|
-
│
|
|
69
|
-
┌────┼────┐
|
|
70
|
-
↓ ↓ ↓
|
|
71
|
-
L1 L2 L3 ← 피드백 라우팅
|
|
72
|
-
↓
|
|
73
|
-
회고적 학습 → 템플릿/프롬프트 자동 개선
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
### 서브에이전트 시스템
|
|
77
|
-
|
|
78
|
-
```
|
|
79
|
-
.claude/agents/
|
|
80
|
-
├── tsq-planner.md # 기획/설계 (Opus)
|
|
81
|
-
├── tsq-developer.md # 코드 구현 (Sonnet)
|
|
82
|
-
├── tsq-qa.md # 검증/리뷰 (Sonnet)
|
|
83
|
-
├── tsq-security.md # 보안 검토
|
|
84
|
-
├── tsq-dba.md # DB 설계
|
|
85
|
-
├── tsq-designer.md # UI/UX 설계
|
|
86
|
-
├── tsq-prompter.md # 프롬프트 최적화
|
|
87
|
-
└── tsq-retro.md # 회고 분석
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### 토큰 효율성
|
|
91
|
-
|
|
92
|
-
| 작업 | oh-my-* 방식 | TimSquad 방식 | 절약률 |
|
|
93
|
-
|-----|-------------|--------------|-------|
|
|
94
|
-
| 피드백 분류 | LLM 판단 | YAML 규칙 | **100%** |
|
|
95
|
-
| 로그 저장 | "저장해" 프롬프트 | bash 파이프 | **100%** |
|
|
96
|
-
| 에이전트 선택 | LLM 오케스트레이터 | 프로그램 스케줄러 | **100%** |
|
|
97
|
-
| **전체** | 100% | 40-60% | **40-60% 절약** |
|
|
98
|
-
|
|
99
|
-
### XML 문서 생성기
|
|
100
|
-
|
|
101
|
-
토큰 효율적인 SSOT 문서 작성
|
|
102
|
-
|
|
103
|
-
```xml
|
|
104
|
-
<generator name="prd" output=".timsquad/ssot/prd.md">
|
|
105
|
-
<section id="basic" title="기본 정보">
|
|
106
|
-
<field name="project_name" type="text" required="true">
|
|
107
|
-
<prompt>프로젝트 이름?</prompt>
|
|
108
|
-
<refinement>영문 소문자, 하이픈 허용</refinement>
|
|
109
|
-
</field>
|
|
110
|
-
</section>
|
|
111
|
-
<output-template>...</output-template>
|
|
112
|
-
</generator>
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Installation
|
|
118
|
-
|
|
119
|
-
### npm (권장)
|
|
36
|
+
## 설치
|
|
120
37
|
|
|
121
38
|
```bash
|
|
122
39
|
# 전역 설치
|
|
123
40
|
npm install -g timsquad
|
|
124
41
|
|
|
125
42
|
# 또는 npx로 직접 실행
|
|
126
|
-
npx timsquad init
|
|
43
|
+
npx timsquad init
|
|
127
44
|
```
|
|
128
45
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
git clone https://github.com/sonature-lab/timsquad.git
|
|
133
|
-
cd timsquad
|
|
134
|
-
npm install
|
|
135
|
-
npm run build
|
|
136
|
-
npm link
|
|
137
|
-
```
|
|
46
|
+
**요구사항:**
|
|
47
|
+
- Node.js >= 18.0.0
|
|
48
|
+
- [Claude Code](https://claude.ai/claude-code) (에이전트 실행 환경)
|
|
138
49
|
|
|
139
50
|
---
|
|
140
51
|
|
|
141
|
-
##
|
|
52
|
+
## 빠른 시작
|
|
142
53
|
|
|
143
54
|
### 1. 프로젝트 초기화
|
|
144
55
|
|
|
145
56
|
```bash
|
|
146
|
-
#
|
|
147
|
-
tsq init -n my-app -t web-service -l 2
|
|
148
|
-
|
|
149
|
-
# 옵션
|
|
150
|
-
# -n, --name 프로젝트 이름
|
|
151
|
-
# -t, --type 프로젝트 타입 (web-service, api-backend, platform, fintech, infra)
|
|
152
|
-
# -l, --level 프로젝트 레벨 (1=MVP, 2=Standard, 3=Enterprise)
|
|
57
|
+
tsq init # 대화형 초기화
|
|
58
|
+
tsq init -n my-app -t web-service -l 2 -y # 비대화형
|
|
153
59
|
```
|
|
154
60
|
|
|
155
|
-
### 2.
|
|
61
|
+
### 2. 생성되는 구조
|
|
156
62
|
|
|
157
63
|
```
|
|
158
64
|
my-app/
|
|
159
|
-
├── CLAUDE.md
|
|
65
|
+
├── CLAUDE.md # PM 역할 정의 (에이전트 지시사항)
|
|
160
66
|
├── .claude/
|
|
161
|
-
│ ├──
|
|
162
|
-
│
|
|
67
|
+
│ ├── settings.json # Claude Code 설정
|
|
68
|
+
│ ├── rules/ # 메인 세션 전용 규칙
|
|
69
|
+
│ ├── agents/ # 6개 전문 에이전트
|
|
70
|
+
│ │ ├── tsq-architect.md # 아키텍처 설계 (Sonnet)
|
|
71
|
+
│ │ ├── tsq-developer.md # 코드 구현 (Sonnet)
|
|
72
|
+
│ │ ├── tsq-qa.md # 검증/리뷰 (Sonnet)
|
|
73
|
+
│ │ ├── tsq-security.md # 보안 검토 (Sonnet)
|
|
74
|
+
│ │ ├── tsq-dba.md # DB 설계 (Sonnet)
|
|
75
|
+
│ │ └── tsq-designer.md # UI/UX 설계 (Sonnet)
|
|
76
|
+
│ ├── skills/ # 도메인별 스킬셋
|
|
77
|
+
│ │ ├── tsq-protocol/ # 에이전트 공통 프로토콜
|
|
78
|
+
│ │ ├── coding/ # 코딩 규칙 + rules/
|
|
79
|
+
│ │ ├── testing/ # 테스트 전략 + references/
|
|
80
|
+
│ │ ├── typescript/ # TypeScript 패턴 + rules/
|
|
81
|
+
│ │ ├── frontend/(react|nextjs)/ # 프론트엔드 + Vercel 22개 룰
|
|
82
|
+
│ │ ├── backend/node/ # Node.js 백엔드 + rules/
|
|
83
|
+
│ │ ├── database/prisma/ # Prisma ORM + rules/
|
|
84
|
+
│ │ ├── methodology/(tdd|bdd|ddd|debugging)/
|
|
85
|
+
│ │ └── ...
|
|
86
|
+
│ └── knowledge/ # 에이전트 참조 지식
|
|
87
|
+
│ ├── checklists/ # 보안, 접근성, SSOT 검증
|
|
88
|
+
│ └── templates/ # 출력 형식 (task-result 등)
|
|
163
89
|
└── .timsquad/
|
|
164
|
-
├── config.yaml
|
|
165
|
-
├── ssot/
|
|
166
|
-
├──
|
|
167
|
-
├── state/
|
|
168
|
-
├──
|
|
169
|
-
├──
|
|
170
|
-
|
|
171
|
-
└── logs/ # 작업 로그
|
|
90
|
+
├── config.yaml # 프로젝트 설정
|
|
91
|
+
├── ssot/ # SSOT 문서 (레벨별 5~14개)
|
|
92
|
+
├── process/ # 워크플로우 정의
|
|
93
|
+
├── state/ # 상태 관리 + Meta Index
|
|
94
|
+
├── feedback/ # 피드백 저장소
|
|
95
|
+
├── logs/ # 3계층 로그 (L1→L2→L3)
|
|
96
|
+
└── retrospective/ # 회고 데이터
|
|
172
97
|
```
|
|
173
98
|
|
|
174
|
-
### 3. Claude Code에서 작업
|
|
99
|
+
### 3. Claude Code에서 작업
|
|
175
100
|
|
|
176
101
|
```bash
|
|
177
|
-
# Claude Code 실행
|
|
178
|
-
claude
|
|
102
|
+
claude # Claude Code 실행
|
|
179
103
|
|
|
180
|
-
#
|
|
181
|
-
@tsq-
|
|
104
|
+
# PM(CLAUDE.md)이 자동으로 작업을 분류하고 에이전트에 위임
|
|
105
|
+
@tsq-architect "시스템 아키텍처 설계해줘"
|
|
182
106
|
@tsq-developer "로그인 API 구현해줘"
|
|
183
107
|
@tsq-qa "코드 리뷰해줘"
|
|
184
108
|
```
|
|
185
109
|
|
|
110
|
+
### 4. CLI로 작업 관리
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
tsq status # 현재 상태 확인
|
|
114
|
+
tsq q "버튼 색상 변경" # Quick 모드 (간단한 작업)
|
|
115
|
+
tsq f "결제 기능 추가" # Full 모드 (SSOT 검증)
|
|
116
|
+
tsq retro auto # 회고 자동 실행
|
|
117
|
+
```
|
|
118
|
+
|
|
186
119
|
---
|
|
187
120
|
|
|
188
|
-
##
|
|
121
|
+
## 핵심 기능
|
|
189
122
|
|
|
190
|
-
###
|
|
123
|
+
### SSOT 문서 체계
|
|
191
124
|
|
|
192
|
-
|
|
193
|
-
tsq init [options] # 프로젝트 초기화
|
|
194
|
-
tsq status [options] # 현재 상태 확인
|
|
195
|
-
tsq log <subcommand> # 작업 로그 관리
|
|
196
|
-
tsq feedback <message> # 피드백 라우팅
|
|
197
|
-
tsq retro <subcommand> # 회고 실행
|
|
198
|
-
```
|
|
125
|
+
프로젝트 레벨에 따라 필수 문서가 자동 결정됩니다:
|
|
199
126
|
|
|
200
|
-
|
|
127
|
+
| 레벨 | 필수 문서 | 대상 |
|
|
128
|
+
|------|----------|------|
|
|
129
|
+
| **Level 1** (MVP) | PRD, Planning, Requirements, Service Spec, Data Design (5개) | 사이드 프로젝트, PoC |
|
|
130
|
+
| **Level 2** (Standard) | Level 1 + 6개 추가 (11개) | 일반 프로젝트, 스타트업 |
|
|
131
|
+
| **Level 3** (Enterprise) | Level 2 + 3개 추가 (14개) | 엔터프라이즈, fintech |
|
|
201
132
|
|
|
202
|
-
|
|
203
|
-
tsq q "버튼 색상 변경" # Quick Mode - 간단한 작업
|
|
204
|
-
tsq f "결제 기능 추가" # Full Mode - SSOT 체크 + Planner 라우팅
|
|
205
|
-
```
|
|
133
|
+
### 에이전트 시스템
|
|
206
134
|
|
|
207
|
-
|
|
135
|
+
PM(CLAUDE.md)이 총괄하며 6개 전문 에이전트에 위임합니다. 각 에이전트는 XML 구조화된 프롬프트, 필수 스킬 주입, 3단계 피드백 라우팅을 갖추고 있습니다.
|
|
208
136
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
tsq
|
|
212
|
-
tsq
|
|
213
|
-
tsq
|
|
137
|
+
| 에이전트 | 역할 |
|
|
138
|
+
|----------|------|
|
|
139
|
+
| `@tsq-architect` | 아키텍처 설계, ADR, 코드 구조 리뷰 |
|
|
140
|
+
| `@tsq-developer` | SSOT 기반 코드 구현, TDD |
|
|
141
|
+
| `@tsq-qa` | 코드 리뷰, 테스트 검증, SSOT 적합성 |
|
|
142
|
+
| `@tsq-security` | 보안 검증, OWASP, 취약점 분석 |
|
|
143
|
+
| `@tsq-dba` | DB 설계, 쿼리 최적화, 마이그레이션 |
|
|
144
|
+
| `@tsq-designer` | UI/UX 설계, 접근성, 디자인 토큰 |
|
|
145
|
+
|
|
146
|
+
### 피드백 라우팅 (L1/L2/L3)
|
|
147
|
+
|
|
148
|
+
피드백을 3단계로 자동 분류하고 적절한 액션을 실행합니다:
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
L1 (구현 수정) → Developer 자동 처리 → 승인 불필요
|
|
152
|
+
L2 (설계 수정) → in_review 상태로 전환 → Phase Gate 차단
|
|
153
|
+
L3 (기획 수정) → 사용자 승인 대기 → approve/reject 필수
|
|
214
154
|
```
|
|
215
155
|
|
|
216
|
-
|
|
156
|
+
→ 상세: [docs/feedback-and-retrospective.md](docs/feedback-and-retrospective.md)
|
|
157
|
+
|
|
158
|
+
### 회고적 학습
|
|
159
|
+
|
|
160
|
+
작업 로그 → 패턴 분석 → 개선 제안 → 프롬프트/템플릿 업데이트. LLM 파인튜닝 대신 프롬프트/템플릿 개선으로 실용화합니다.
|
|
217
161
|
|
|
218
162
|
```bash
|
|
219
|
-
tsq
|
|
220
|
-
tsq
|
|
221
|
-
tsq metrics collect # 메트릭 수집
|
|
222
|
-
tsq metrics summary # 메트릭 요약 표시
|
|
163
|
+
tsq retro auto # 수집 → 분석 → 리포트 → 적용 (원클릭)
|
|
164
|
+
tsq improve analyze # 패턴 분석 + 개선 제안
|
|
223
165
|
```
|
|
224
166
|
|
|
225
|
-
|
|
167
|
+
→ 상세: [docs/feedback-and-retrospective.md](docs/feedback-and-retrospective.md)
|
|
226
168
|
|
|
227
|
-
|
|
169
|
+
### 데몬 기반 자동화 파이프라인
|
|
228
170
|
|
|
229
|
-
|
|
230
|
-
|-----|------|----------|-----------|
|
|
231
|
-
| **web-service** | SaaS, 웹앱 | ui-ux-spec | 선택적 |
|
|
232
|
-
| **api-backend** | API 서버, 마이크로서비스 | - | 선택적 |
|
|
233
|
-
| **platform** | 프레임워크, SDK | integration-spec | 선택적 |
|
|
234
|
-
| **fintech** | 거래소, 결제 | security-spec | **필수** |
|
|
235
|
-
| **infra** | DevOps, 자동화 | deployment-spec | 선택적 |
|
|
171
|
+
**모든 오케스트레이션은 토큰 비용 0** — 프로그램이 판단합니다:
|
|
236
172
|
|
|
237
|
-
|
|
173
|
+
```
|
|
174
|
+
Claude Code 세션 → 데몬이 JSONL 실시간 감시
|
|
175
|
+
→ L1 태스크 로그 자동 기록
|
|
176
|
+
→ L2 시퀀스 로그 자동 집계
|
|
177
|
+
→ L3 Phase 로그 자동 생성
|
|
178
|
+
→ Phase Gate 자동 확인
|
|
179
|
+
→ 메트릭 인메모리 누적 → 세션 끝 flush
|
|
180
|
+
→ Meta Index 자동 업데이트
|
|
181
|
+
```
|
|
238
182
|
|
|
239
|
-
|
|
183
|
+
→ 상세: [docs/token-efficiency.md](docs/token-efficiency.md)
|
|
240
184
|
|
|
241
|
-
|
|
242
|
-
|-------|-----|----------|-----|
|
|
243
|
-
| **1 (MVP)** | 최소 문서 | prd, requirements, service-spec, data-design | 사이드 프로젝트, PoC |
|
|
244
|
-
| **2 (Standard)** | 표준 문서 | L1 + glossary, error-codes, test-spec, ADR | 일반 프로젝트, 스타트업 |
|
|
245
|
-
| **3 (Enterprise)** | 전체 문서 | L2 + security-spec, deployment-spec | 엔터프라이즈, fintech |
|
|
185
|
+
### Meta Index (코드 구조 인덱스)
|
|
246
186
|
|
|
247
|
-
|
|
187
|
+
AST 기반 코드/UI 구조 자동 인덱싱 + 에이전트 semantic 데이터 병합:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
tsq mi rebuild # 전체 코드+UI 인덱스 구축
|
|
191
|
+
tsq mi stats # Health Score + UI Health
|
|
192
|
+
```
|
|
248
193
|
|
|
249
|
-
|
|
194
|
+
→ 상세: [docs/meta-index-architecture.md](docs/meta-index-architecture.md)
|
|
250
195
|
|
|
251
|
-
|
|
196
|
+
---
|
|
252
197
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
|
256
|
-
|
|
257
|
-
|
|
|
198
|
+
## CLI 명령어 요약
|
|
199
|
+
|
|
200
|
+
| 명령어 | 설명 |
|
|
201
|
+
|--------|------|
|
|
202
|
+
| `tsq init` | 프로젝트 초기화 (대화형/비대화형) |
|
|
203
|
+
| `tsq status` | 프로젝트 상태 확인 |
|
|
204
|
+
| `tsq q "작업"` | Quick 모드 (간단한 작업) |
|
|
205
|
+
| `tsq f "작업"` | Full 모드 (SSOT 검증) |
|
|
206
|
+
| `tsq log` | 3계층 작업 로그 관리 (L1/L2/L3) |
|
|
207
|
+
| `tsq feedback` | 피드백 분류 + 자동 액션 |
|
|
208
|
+
| `tsq retro` | 회고 실행 (수동/자동) |
|
|
209
|
+
| `tsq metrics` | 메트릭 수집/트렌드 |
|
|
210
|
+
| `tsq mi` | Meta Index 관리 (rebuild/stats) |
|
|
211
|
+
| `tsq knowledge` | Knowledge 파일 관리 |
|
|
212
|
+
| `tsq wf` | 워크플로우 자동화 |
|
|
213
|
+
| `tsq daemon` | 백그라운드 데몬 관리 |
|
|
214
|
+
|
|
215
|
+
→ 전체 CLI 레퍼런스: [docs/cli.md](docs/cli.md)
|
|
258
216
|
|
|
259
217
|
---
|
|
260
218
|
|
|
261
|
-
##
|
|
219
|
+
## 프로젝트 타입
|
|
262
220
|
|
|
263
|
-
|
|
221
|
+
| 타입 | 설명 |
|
|
222
|
+
|------|------|
|
|
223
|
+
| `web-service` | SaaS, 풀스택 웹 서비스 |
|
|
224
|
+
| `web-app` | BaaS 기반 (Supabase/Firebase) |
|
|
225
|
+
| `api-backend` | API 서버, 마이크로서비스 |
|
|
226
|
+
| `platform` | 프레임워크, SDK |
|
|
227
|
+
| `fintech` | 거래소, 결제 (Level 3 강제) |
|
|
228
|
+
| `infra` | DevOps, 자동화 |
|
|
264
229
|
|
|
265
|
-
|
|
266
|
-
tsq retro
|
|
267
|
-
```
|
|
230
|
+
---
|
|
268
231
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
232
|
+
## 문서
|
|
233
|
+
|
|
234
|
+
| 문서 | 설명 |
|
|
235
|
+
|------|------|
|
|
236
|
+
| [PRD](docs/PRD.md) | 프레임워크 전체 기획 |
|
|
237
|
+
| [Core Concepts](docs/core-concepts.md) | 분수 모델, SSOT, 에이전트/스킬 구조 |
|
|
238
|
+
| [CLI Reference](docs/cli.md) | 전체 CLI 명령어 레퍼런스 |
|
|
239
|
+
| [Authoring Guide](docs/authoring-guide.md) | 에이전트/스킬/Knowledge 작성 가이드 |
|
|
240
|
+
| [Log Architecture](docs/log-architecture.md) | 3계층 로그 체계 (L1→L2→L3) |
|
|
241
|
+
| [Feedback & Retrospective](docs/feedback-and-retrospective.md) | 피드백 라우팅 + 회고적 학습 |
|
|
242
|
+
| [Token Efficiency](docs/token-efficiency.md) | 토큰 효율성 설계 |
|
|
243
|
+
| [Knowledge Architecture](docs/knowledge-architecture.md) | Knowledge 시스템 |
|
|
244
|
+
| [Meta Index Architecture](docs/meta-index-architecture.md) | 코드/UI 구조 인덱스 |
|
|
245
|
+
| [File Structure](docs/file-structure.md) | 템플릿 + 초기화 후 구조 |
|
|
274
246
|
|
|
275
247
|
---
|
|
276
248
|
|
|
@@ -285,47 +257,13 @@ tsq retro
|
|
|
285
257
|
|
|
286
258
|
---
|
|
287
259
|
|
|
288
|
-
## Configuration
|
|
289
|
-
|
|
290
|
-
`.timsquad/config.yaml`:
|
|
291
|
-
|
|
292
|
-
```yaml
|
|
293
|
-
project:
|
|
294
|
-
name: "my-app"
|
|
295
|
-
type: web-service
|
|
296
|
-
level: 2
|
|
297
|
-
|
|
298
|
-
agents:
|
|
299
|
-
planner:
|
|
300
|
-
model: opus
|
|
301
|
-
developer:
|
|
302
|
-
model: sonnet
|
|
303
|
-
qa:
|
|
304
|
-
model: sonnet
|
|
305
|
-
|
|
306
|
-
methodology:
|
|
307
|
-
development: tdd
|
|
308
|
-
process: agile
|
|
309
|
-
branching: github-flow
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
---
|
|
313
|
-
|
|
314
|
-
## Roadmap
|
|
315
|
-
|
|
316
|
-
- [x] **Phase 0 (MVP)** - common 템플릿, 기본 에이전트, CLI
|
|
317
|
-
- [ ] **Phase 1** - 타입별 템플릿 확장, 회고 시스템 고도화
|
|
318
|
-
- [ ] **Phase 2** - Plugin 배포, MCP 서버, 멀티 LLM 지원
|
|
319
|
-
|
|
320
|
-
---
|
|
321
|
-
|
|
322
260
|
## Contributing
|
|
323
261
|
|
|
324
|
-
기여를 환영합니다!
|
|
262
|
+
기여를 환영합니다!
|
|
325
263
|
|
|
326
264
|
1. Fork the repository
|
|
327
265
|
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
|
|
328
|
-
3. Commit your changes (`git commit -m '
|
|
266
|
+
3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
|
|
329
267
|
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
330
268
|
5. Open a Pull Request
|
|
331
269
|
|
|
@@ -337,11 +275,7 @@ MIT License - see [LICENSE](LICENSE) for details.
|
|
|
337
275
|
|
|
338
276
|
---
|
|
339
277
|
|
|
340
|
-
## Related
|
|
278
|
+
## Related
|
|
341
279
|
|
|
342
280
|
- [Anthropic Skills](https://github.com/anthropics/skills)
|
|
343
|
-
- [
|
|
344
|
-
|
|
345
|
-
---
|
|
346
|
-
|
|
347
|
-
**TimSquad v2.0** - AI Agent Development Process Framework
|
|
281
|
+
- [Claude Code](https://claude.ai/claude-code)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C5D"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tsq daemon start/stop/status
|
|
3
|
+
* 데몬 프로세스 관리 CLI.
|
|
4
|
+
*/
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import { fork } from 'child_process';
|
|
7
|
+
import { colors, printHeader, printError, printSuccess, printKeyValue } from '../utils/colors.js';
|
|
8
|
+
import { findProjectRoot } from '../lib/project.js';
|
|
9
|
+
import { isDaemonRunning, killZombie } from '../daemon/index.js';
|
|
10
|
+
import { queryDaemon } from '../daemon/meta-cache.js';
|
|
11
|
+
export function registerDaemonCommand(program) {
|
|
12
|
+
const cmd = program
|
|
13
|
+
.command('daemon')
|
|
14
|
+
.description('Background daemon process management');
|
|
15
|
+
// tsq daemon start
|
|
16
|
+
cmd
|
|
17
|
+
.command('start')
|
|
18
|
+
.description('Start background daemon')
|
|
19
|
+
.option('--jsonl <path>', 'JSONL transcript path (usually auto-detected)')
|
|
20
|
+
.action(async (options) => {
|
|
21
|
+
try {
|
|
22
|
+
await startDaemon(options);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
printError(error.message);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
// tsq daemon stop
|
|
30
|
+
cmd
|
|
31
|
+
.command('stop')
|
|
32
|
+
.description('Stop background daemon')
|
|
33
|
+
.action(async () => {
|
|
34
|
+
try {
|
|
35
|
+
await stopDaemon();
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
printError(error.message);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
// tsq daemon status
|
|
43
|
+
cmd
|
|
44
|
+
.command('status')
|
|
45
|
+
.description('Show daemon status')
|
|
46
|
+
.action(async () => {
|
|
47
|
+
try {
|
|
48
|
+
await showStatus();
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
printError(error.message);
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
async function startDaemon(options) {
|
|
57
|
+
const projectRoot = await findProjectRoot();
|
|
58
|
+
if (!projectRoot)
|
|
59
|
+
throw new Error('Not a TimSquad project');
|
|
60
|
+
// 이미 실행 중인지 확인
|
|
61
|
+
const status = await isDaemonRunning(projectRoot);
|
|
62
|
+
if (status.running) {
|
|
63
|
+
printSuccess(`Daemon already running (PID: ${status.pid})`);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
// 좀비 정리
|
|
67
|
+
await killZombie(projectRoot);
|
|
68
|
+
const jsonlPath = options.jsonl || process.env.CLAUDE_TRANSCRIPT_PATH || '';
|
|
69
|
+
if (!jsonlPath) {
|
|
70
|
+
throw new Error('JSONL path required. Use --jsonl or set CLAUDE_TRANSCRIPT_PATH.');
|
|
71
|
+
}
|
|
72
|
+
// fork로 데몬 프로세스 시작
|
|
73
|
+
const daemonEntry = path.join(path.dirname(new URL(import.meta.url).pathname), '..', 'daemon', 'entry.js');
|
|
74
|
+
const child = fork(daemonEntry, [], {
|
|
75
|
+
detached: true,
|
|
76
|
+
stdio: 'ignore',
|
|
77
|
+
env: {
|
|
78
|
+
...process.env,
|
|
79
|
+
TSQ_DAEMON_JSONL: jsonlPath,
|
|
80
|
+
TSQ_DAEMON_PROJECT: projectRoot,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
child.unref();
|
|
84
|
+
printSuccess(`Daemon started (PID: ${child.pid})`);
|
|
85
|
+
}
|
|
86
|
+
async function stopDaemon() {
|
|
87
|
+
const projectRoot = await findProjectRoot();
|
|
88
|
+
if (!projectRoot)
|
|
89
|
+
throw new Error('Not a TimSquad project');
|
|
90
|
+
const status = await isDaemonRunning(projectRoot);
|
|
91
|
+
if (!status.running) {
|
|
92
|
+
console.log(colors.dim(' Daemon not running'));
|
|
93
|
+
// 좀비 정리만 수행
|
|
94
|
+
await killZombie(projectRoot);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
// SIGTERM 전송
|
|
98
|
+
try {
|
|
99
|
+
process.kill(status.pid, 'SIGTERM');
|
|
100
|
+
printSuccess(`Daemon stopped (PID: ${status.pid})`);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// 이미 종료된 경우
|
|
104
|
+
await killZombie(projectRoot);
|
|
105
|
+
printSuccess('Daemon stopped');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function showStatus() {
|
|
109
|
+
const projectRoot = await findProjectRoot();
|
|
110
|
+
if (!projectRoot)
|
|
111
|
+
throw new Error('Not a TimSquad project');
|
|
112
|
+
const status = await isDaemonRunning(projectRoot);
|
|
113
|
+
printHeader('Daemon Status');
|
|
114
|
+
if (!status.running) {
|
|
115
|
+
console.log(colors.dim(' Not running'));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
printKeyValue(' PID', String(status.pid));
|
|
119
|
+
printKeyValue(' Status', colors.success('running'));
|
|
120
|
+
// IPC로 상세 정보 조회
|
|
121
|
+
try {
|
|
122
|
+
const info = await queryDaemon(projectRoot, 'status');
|
|
123
|
+
if (info.loadedAt) {
|
|
124
|
+
printKeyValue(' Index Loaded', info.loadedAt);
|
|
125
|
+
}
|
|
126
|
+
if (info.totalFiles !== undefined) {
|
|
127
|
+
printKeyValue(' Indexed Files', String(info.totalFiles));
|
|
128
|
+
}
|
|
129
|
+
if (info.totalMethods !== undefined) {
|
|
130
|
+
printKeyValue(' Indexed Methods', String(info.totalMethods));
|
|
131
|
+
}
|
|
132
|
+
if (info.modules?.length) {
|
|
133
|
+
printKeyValue(' Modules', info.modules.join(', '));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
console.log(colors.dim(' (IPC not available)'));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=daemon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
import type { FeedbackLevel, FeedbackRoutingRules } from '../types/index.js';
|
|
2
3
|
export declare function registerFeedbackCommand(program: Command): void;
|
|
4
|
+
export interface ClassificationResult {
|
|
5
|
+
level: FeedbackLevel;
|
|
6
|
+
routeTo: string;
|
|
7
|
+
approvalRequired: boolean;
|
|
8
|
+
trigger: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function classifyFeedback(message: string, rules: FeedbackRoutingRules): ClassificationResult;
|
|
11
|
+
export declare function getTriggerPatterns(trigger: string): string[];
|
|
3
12
|
//# sourceMappingURL=feedback.d.ts.map
|