timsquad 2.1.0 → 3.4.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.ko.md +288 -0
- package/README.md +170 -763
- package/dist/commands/compile.d.ts +3 -0
- package/dist/commands/compile.d.ts.map +1 -0
- package/dist/commands/compile.js +170 -0
- package/dist/commands/compile.js.map +1 -0
- package/dist/commands/daemon.d.ts +7 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +229 -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 +235 -14
- 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/init.d.ts.map +1 -1
- package/dist/commands/init.js +118 -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 +965 -0
- 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 +239 -4
- package/dist/commands/metrics.js.map +1 -1
- package/dist/commands/retro.js +154 -6
- package/dist/commands/retro.js.map +1 -1
- package/dist/commands/skills.d.ts +12 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +231 -0
- package/dist/commands/skills.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 +292 -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 +29 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +296 -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 +63 -0
- package/dist/daemon/meta-cache.d.ts.map +1 -0
- package/dist/daemon/meta-cache.js +249 -0
- package/dist/daemon/meta-cache.js.map +1 -0
- package/dist/daemon/session-state.d.ts +19 -0
- package/dist/daemon/session-state.d.ts.map +1 -0
- package/dist/daemon/session-state.js +132 -0
- package/dist/daemon/session-state.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 +164 -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/compile-rules.d.ts +66 -0
- package/dist/lib/compile-rules.d.ts.map +1 -0
- package/dist/lib/compile-rules.js +114 -0
- package/dist/lib/compile-rules.js.map +1 -0
- package/dist/lib/compiler.d.ts +105 -0
- package/dist/lib/compiler.d.ts.map +1 -0
- package/dist/lib/compiler.js +368 -0
- package/dist/lib/compiler.js.map +1 -0
- package/dist/lib/config.d.ts +7 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +34 -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 +115 -20
- 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 +103 -2
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +184 -9
- package/dist/types/config.js.map +1 -1
- package/dist/types/feedback.d.ts +7 -0
- package/dist/types/feedback.d.ts.map +1 -1
- package/dist/types/feedback.js +1 -1
- 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 +23 -0
- 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/domain/mobile/_common.md +13 -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/controller/SKILL.md +111 -0
- package/templates/base/skills/controller/references/README.md +35 -0
- package/templates/base/skills/controller/rules/README.md +18 -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/mobile/dart/SKILL.md +69 -0
- package/templates/base/skills/mobile/dart/rules/async-patterns.md +112 -0
- package/templates/base/skills/mobile/dart/rules/code-style.md +96 -0
- package/templates/base/skills/mobile/dart/rules/null-safety.md +84 -0
- package/templates/base/skills/mobile/dart/rules/type-system.md +111 -0
- package/templates/base/skills/mobile/flutter/SKILL.md +89 -0
- package/templates/base/skills/mobile/flutter/ci-cd/SKILL.md +82 -0
- package/templates/base/skills/mobile/flutter/ci-cd/references/ci-cd-pipeline.md +314 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/code-signing.md +106 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/codemagic-setup.md +116 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/fastlane-setup.md +105 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/github-actions.md +112 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/store-deployment.md +106 -0
- package/templates/base/skills/mobile/flutter/ci-cd/rules/versioning.md +107 -0
- package/templates/base/skills/mobile/flutter/i18n/SKILL.md +78 -0
- package/templates/base/skills/mobile/flutter/i18n/references/i18n-architecture.md +225 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/arb-files.md +182 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/locale-switching.md +226 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/localization-setup.md +137 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/plural-gender.md +159 -0
- package/templates/base/skills/mobile/flutter/i18n/rules/text-direction.md +199 -0
- package/templates/base/skills/mobile/flutter/monitoring/SKILL.md +81 -0
- package/templates/base/skills/mobile/flutter/monitoring/references/monitoring-architecture.md +269 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/analytics.md +227 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/crashlytics-setup.md +195 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/logging.md +258 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/performance-monitoring.md +248 -0
- package/templates/base/skills/mobile/flutter/monitoring/rules/sentry-integration.md +249 -0
- package/templates/base/skills/mobile/flutter/networking/SKILL.md +88 -0
- package/templates/base/skills/mobile/flutter/networking/references/api-client-architecture.md +305 -0
- package/templates/base/skills/mobile/flutter/networking/rules/caching.md +212 -0
- package/templates/base/skills/mobile/flutter/networking/rules/connectivity.md +213 -0
- package/templates/base/skills/mobile/flutter/networking/rules/dio-setup.md +159 -0
- package/templates/base/skills/mobile/flutter/networking/rules/error-handling.md +209 -0
- package/templates/base/skills/mobile/flutter/networking/rules/interceptors.md +205 -0
- package/templates/base/skills/mobile/flutter/networking/rules/retrofit-patterns.md +194 -0
- package/templates/base/skills/mobile/flutter/push-notifications/SKILL.md +87 -0
- package/templates/base/skills/mobile/flutter/push-notifications/references/notification-architecture.md +340 -0
- package/templates/base/skills/mobile/flutter/push-notifications/references/platform-setup.md +286 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/background-processing.md +308 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/deep-linking.md +217 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/fcm-setup.md +164 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/local-notifications.md +262 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/notification-handling.md +210 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/notification-permissions.md +246 -0
- package/templates/base/skills/mobile/flutter/push-notifications/rules/rich-notifications.md +320 -0
- package/templates/base/skills/mobile/flutter/references/freezed-patterns.md +162 -0
- package/templates/base/skills/mobile/flutter/references/project-structure.md +170 -0
- package/templates/base/skills/mobile/flutter/rules/animations.md +112 -0
- package/templates/base/skills/mobile/flutter/rules/architecture.md +121 -0
- package/templates/base/skills/mobile/flutter/rules/navigation-routing.md +117 -0
- package/templates/base/skills/mobile/flutter/rules/performance.md +112 -0
- package/templates/base/skills/mobile/flutter/rules/platform-adaptive.md +126 -0
- package/templates/base/skills/mobile/flutter/rules/state-management.md +110 -0
- package/templates/base/skills/mobile/flutter/rules/testing.md +131 -0
- package/templates/base/skills/mobile/flutter/rules/widget-conventions.md +122 -0
- package/templates/base/skills/mobile/flutter/security/SKILL.md +86 -0
- package/templates/base/skills/mobile/flutter/security/references/mobile-security-checklist.md +168 -0
- package/templates/base/skills/mobile/flutter/security/rules/api-key-protection.md +206 -0
- package/templates/base/skills/mobile/flutter/security/rules/authentication.md +248 -0
- package/templates/base/skills/mobile/flutter/security/rules/data-protection.md +271 -0
- package/templates/base/skills/mobile/flutter/security/rules/obfuscation.md +213 -0
- package/templates/base/skills/mobile/flutter/security/rules/secure-storage.md +171 -0
- package/templates/base/skills/mobile/flutter/security/rules/ssl-pinning.md +197 -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/{common → base}/timsquad/retrospective/metrics/metrics-schema.json +46 -1
- package/templates/platforms/claude-code/CLAUDE.md.template +89 -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/scripts/completion-guard.sh +57 -0
- package/templates/platforms/claude-code/scripts/phase-guard.sh +79 -0
- package/templates/platforms/claude-code/settings.json +98 -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/mobile-app/config.yaml +123 -0
- package/templates/project-types/mobile-app/process/workflow.xml +191 -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 -311
- package/templates/common/claude/agents/tsq-designer.md +0 -323
- package/templates/common/claude/agents/tsq-developer.md +0 -177
- package/templates/common/claude/agents/tsq-planner.md +0 -190
- package/templates/common/claude/agents/tsq-prompter.md +0 -356
- package/templates/common/claude/agents/tsq-qa.md +0 -168
- package/templates/common/claude/agents/tsq-retro.md +0 -193
- package/templates/common/claude/agents/tsq-security.md +0 -221
- package/templates/common/claude/hooks/auto-metrics.sh +0 -165
- package/templates/common/claude/hooks/auto-worklog.sh +0 -245
- package/templates/common/claude/hooks/event-logger.sh +0 -208
- package/templates/common/claude/settings.json +0 -86
- 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 -132
- /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/phase-checklist.yaml +0 -0
- /package/templates/{common → base}/timsquad/process/state-machine.xml +0 -0
- /package/templates/{common → base}/timsquad/process/validation-rules.xml +0 -0
- /package/templates/{common → base}/timsquad/process/workflow-base.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
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ui-design
|
|
3
|
+
description: |
|
|
4
|
+
UI/UX 설계 방법론.
|
|
5
|
+
와이어프레임 표기법, 사용자 플로우 다이어그램, 화면 설계 프로세스.
|
|
6
|
+
Use when: 화면 설계, 와이어프레임, UX 플로우, 프로토타이핑
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
tags: [ui, ux, design]
|
|
9
|
+
user-invocable: false
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# UI/UX Design Methodology
|
|
13
|
+
|
|
14
|
+
## 와이어프레임 표기법
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
+---------------------------------------------+ <- 컨테이너
|
|
18
|
+
| +------------------------------------------+| <- 헤더
|
|
19
|
+
| | [로고] [메뉴] [프로필] ||
|
|
20
|
+
| +------------------------------------------+|
|
|
21
|
+
| |
|
|
22
|
+
| +----------+ +----------------------------+ | <- 2컬럼
|
|
23
|
+
| | 사이드바 | | 메인 콘텐츠 | |
|
|
24
|
+
| | | | | |
|
|
25
|
+
| | * 메뉴1 | | +------+ +------+ | | <- 카드
|
|
26
|
+
| | * 메뉴2 | | |카드1 | |카드2 | | |
|
|
27
|
+
| | | | +------+ +------+ | |
|
|
28
|
+
| +----------+ +----------------------------+ |
|
|
29
|
+
| |
|
|
30
|
+
| +------------------------------------------+| <- 푸터
|
|
31
|
+
| | (c) 2026 Company ||
|
|
32
|
+
| +------------------------------------------+|
|
|
33
|
+
+---------------------------------------------+
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### 표기 규칙
|
|
37
|
+
|
|
38
|
+
| 기호 | 의미 |
|
|
39
|
+
|-----|------|
|
|
40
|
+
| `[텍스트]` | 버튼/링크 |
|
|
41
|
+
| `(텍스트)` | 아이콘 |
|
|
42
|
+
| `{입력}` | 입력 필드 |
|
|
43
|
+
| `* 항목` | 리스트 아이템 |
|
|
44
|
+
| `[x]` / `[ ]` | 체크박스 |
|
|
45
|
+
| `(*)` / `( )` | 라디오 버튼 |
|
|
46
|
+
| `[v]` | 드롭다운 |
|
|
47
|
+
| `===` | 구분선 |
|
|
48
|
+
| `...` | 로딩/생략 |
|
|
49
|
+
|
|
50
|
+
## 사용자 플로우 표기
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
[시작] -> (조건) -> [액션] -> [결과]
|
|
54
|
+
|
|
|
55
|
+
[대안 경로]
|
|
56
|
+
|
|
57
|
+
예시:
|
|
58
|
+
[로그인 페이지] -> (회원?) -> [대시보드]
|
|
59
|
+
| No
|
|
60
|
+
[회원가입]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## 설계 프로세스
|
|
64
|
+
|
|
65
|
+
1. SSOT(ui-ux-spec.md) 확인
|
|
66
|
+
2. 사용자 플로우 다이어그램 작성
|
|
67
|
+
3. 와이어프레임 작성 (ASCII)
|
|
68
|
+
4. 컴포넌트 목록 + 인터랙션 정의
|
|
69
|
+
5. 반응형 처리 명시
|
|
70
|
+
6. 접근성 검토 (knowledge/checklists/accessibility.md 참조)
|
|
@@ -103,6 +103,50 @@
|
|
|
103
103
|
"required": ["id", "name", "frequency"]
|
|
104
104
|
},
|
|
105
105
|
|
|
106
|
+
"taskMetrics": {
|
|
107
|
+
"type": "object",
|
|
108
|
+
"description": "Task JSON 기반 태스크 수준 메트릭",
|
|
109
|
+
"properties": {
|
|
110
|
+
"total": {
|
|
111
|
+
"type": "integer",
|
|
112
|
+
"description": "총 태스크 수"
|
|
113
|
+
},
|
|
114
|
+
"completed": {
|
|
115
|
+
"type": "integer",
|
|
116
|
+
"description": "완료 태스크 수"
|
|
117
|
+
},
|
|
118
|
+
"failed": {
|
|
119
|
+
"type": "integer",
|
|
120
|
+
"description": "실패 태스크 수"
|
|
121
|
+
},
|
|
122
|
+
"success_rate": {
|
|
123
|
+
"type": "number",
|
|
124
|
+
"minimum": 0,
|
|
125
|
+
"maximum": 100,
|
|
126
|
+
"description": "성공률 (%)"
|
|
127
|
+
},
|
|
128
|
+
"total_files_changed": {
|
|
129
|
+
"type": "integer",
|
|
130
|
+
"description": "총 변경 파일 수"
|
|
131
|
+
},
|
|
132
|
+
"avg_files_per_task": {
|
|
133
|
+
"type": "number",
|
|
134
|
+
"description": "태스크당 평균 변경 파일 수"
|
|
135
|
+
},
|
|
136
|
+
"semantic_coverage": {
|
|
137
|
+
"type": "number",
|
|
138
|
+
"minimum": 0,
|
|
139
|
+
"maximum": 100,
|
|
140
|
+
"description": "semantic 데이터 채움 비율 (%)"
|
|
141
|
+
},
|
|
142
|
+
"error_types": {
|
|
143
|
+
"type": "object",
|
|
144
|
+
"additionalProperties": { "type": "integer" },
|
|
145
|
+
"description": "에러 타입별 카운트 (build_failure, test_failure 등)"
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
|
|
106
150
|
"improvement": {
|
|
107
151
|
"type": "object",
|
|
108
152
|
"properties": {
|
|
@@ -160,7 +204,8 @@
|
|
|
160
204
|
"total_tasks": { "type": "integer" },
|
|
161
205
|
"success_rate": { "type": "number" },
|
|
162
206
|
"avg_revision_count": { "type": "number" },
|
|
163
|
-
"level_3_feedback_count": { "type": "integer" }
|
|
207
|
+
"level_3_feedback_count": { "type": "integer" },
|
|
208
|
+
"task_metrics": { "$ref": "#/definitions/taskMetrics" }
|
|
164
209
|
}
|
|
165
210
|
},
|
|
166
211
|
"agents": {
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# {{PROJECT_NAME}}
|
|
2
|
+
|
|
3
|
+
> TimSquad v3.1으로 관리되는 프로젝트입니다.
|
|
4
|
+
|
|
5
|
+
<timsquad-initialization>
|
|
6
|
+
이 프로젝트는 TimSquad 프레임워크를 사용합니다.
|
|
7
|
+
`.timsquad/` 디렉토리가 없으면 진행을 중단하고 사용자에게 알리세요:
|
|
8
|
+
"TimSquad 프로젝트가 초기화되지 않았습니다. `tsq init --type {{PROJECT_TYPE}}`을 실행하세요."
|
|
9
|
+
</timsquad-initialization>
|
|
10
|
+
|
|
11
|
+
## 역할: Project Manager
|
|
12
|
+
|
|
13
|
+
당신은 이 프로젝트의 PM입니다. 사용자와 직접 소통하며, 작업을 분류하여 서브에이전트에 위임합니다.
|
|
14
|
+
|
|
15
|
+
### 핵심 책임
|
|
16
|
+
1. **요구사항 수집** — 사용자와 소통, 진행 보고, 승인 요청
|
|
17
|
+
2. **작업 위임** — 적절한 서브에이전트에게 배분
|
|
18
|
+
3. **기획** — 최초 기획 + 변경 시 (`skills/planning/` 활용)
|
|
19
|
+
4. **리뷰** — architect 보고서 기반 시퀀스 검토
|
|
20
|
+
5. **SSOT 관리** — 문서 일관성과 최신성 유지
|
|
21
|
+
6. **피드백 라우팅** — L1/L2/L3 분류 후 적절한 담당자 전달
|
|
22
|
+
|
|
23
|
+
### 활성 서브에이전트
|
|
24
|
+
|
|
25
|
+
{{ACTIVE_AGENTS}}
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 필수 참조 파일
|
|
30
|
+
|
|
31
|
+
작업 전 반드시 확인:
|
|
32
|
+
- `.timsquad/config.yaml` — 프로젝트 설정
|
|
33
|
+
- `.timsquad/state/current-phase.json` — 현재 Phase
|
|
34
|
+
- `.timsquad/state/workspace.xml` — 실시간 작업 상태
|
|
35
|
+
- `.timsquad/ssot/` — SSOT 문서들
|
|
36
|
+
- `.claude/knowledge/` — 참조 지식
|
|
37
|
+
|
|
38
|
+
## 서브에이전트 위임 규칙
|
|
39
|
+
|
|
40
|
+
<rules>
|
|
41
|
+
<must>서브에이전트 위임은 controller skill의 프로세스를 따를 것</must>
|
|
42
|
+
<must>위임 전 해당 에이전트의 prerequisites가 compiled spec으로 존재하는지 확인</must>
|
|
43
|
+
<must>compiled spec의 stale 여부를 .compile-manifest.json으로 확인</must>
|
|
44
|
+
<must-not>controller 우회하여 Task() 직접 호출</must-not>
|
|
45
|
+
<must-not>compiled spec 없이 서브에이전트 실행</must-not>
|
|
46
|
+
</rules>
|
|
47
|
+
|
|
48
|
+
{{DELEGATION_RULES}}
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 작업 모드 분류
|
|
53
|
+
|
|
54
|
+
<task-classification>
|
|
55
|
+
사용자가 `tsq f` 또는 `tsq q` 없이 직접 작업을 지시하면, 실행 전에 반드시 모드를 분류한다.
|
|
56
|
+
|
|
57
|
+
<quick-indicators>CSS, 스타일, 오타, typo, 색상, 텍스트, 변수명, 간단한 버그, 1-2줄 수정</quick-indicators>
|
|
58
|
+
<full-indicators>새 기능, API, DB, 구조 변경, 인증, 아키텍처, 리팩토링, 여러 파일 수정</full-indicators>
|
|
59
|
+
|
|
60
|
+
<rules>
|
|
61
|
+
<must>Full로 판단되면 사용자에게 확인 후 진행:
|
|
62
|
+
"이 작업은 Full 모드로 진행합니다 (SSOT 검증 + controller 경유). 진행할까요?"</must>
|
|
63
|
+
<must>Quick으로 판단되면 바로 진행하되 모드를 명시:
|
|
64
|
+
"Quick 모드로 바로 진행합니다."</must>
|
|
65
|
+
<must>판단이 모호하면 사용자에게 선택지를 제시</must>
|
|
66
|
+
</rules>
|
|
67
|
+
</task-classification>
|
|
68
|
+
|
|
69
|
+
## 작업 원칙
|
|
70
|
+
|
|
71
|
+
1. 요구사항에 여러 해석이 가능하면 조용히 선택하지 말고 **선택지를 제시**하라
|
|
72
|
+
2. 구현 전에 **검증 기준**(테스트 or 확인 방법)을 먼저 명시하라
|
|
73
|
+
|
|
74
|
+
## 금지 사항
|
|
75
|
+
|
|
76
|
+
- SSOT 문서 없이 구현 시작 금지
|
|
77
|
+
- User 승인 없이 Level 3 변경 금지
|
|
78
|
+
- 에이전트 간 직접 통신 금지 (모든 조율은 PM 통해)
|
|
79
|
+
- 로그 기록 없이 작업 완료 선언 금지
|
|
80
|
+
- Phase 전환 조건 미충족 시 다음 Phase 진행 금지
|
|
81
|
+
|
|
82
|
+
## 상세 규칙
|
|
83
|
+
|
|
84
|
+
Phase 관리, 시퀀스 관리, workspace 동기화, 피드백 라우팅, ADR, 보고 형식 등
|
|
85
|
+
상세 규칙은 `.claude/rules/`에 정의되어 있습니다. 관련 작업 시 자동 로드됩니다.
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
**타입**: {{PROJECT_TYPE}} | **레벨**: {{PROJECT_LEVEL}} | **초기화**: {{INIT_DATE}}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: ADR (Architecture Decision Record) 작성 규칙.
|
|
3
|
+
globs:
|
|
4
|
+
- ".timsquad/ssot/ADR-*"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# ADR (Architecture Decision Record)
|
|
8
|
+
|
|
9
|
+
## 작성 트리거
|
|
10
|
+
- 기술 스택 선택/변경
|
|
11
|
+
- 아키텍처 패턴 결정
|
|
12
|
+
- 외부 서비스 연동 방식 결정
|
|
13
|
+
- 데이터 모델 중요 결정 (비정규화 등)
|
|
14
|
+
|
|
15
|
+
## 형식
|
|
16
|
+
```markdown
|
|
17
|
+
## ADR-XXX: {결정 제목}
|
|
18
|
+
|
|
19
|
+
### Context
|
|
20
|
+
{결정이 필요한 배경}
|
|
21
|
+
|
|
22
|
+
### Decision
|
|
23
|
+
{결정 내용}
|
|
24
|
+
|
|
25
|
+
### Consequences
|
|
26
|
+
- 장점: ...
|
|
27
|
+
- 단점: ...
|
|
28
|
+
- 대응: ...
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 저장 위치
|
|
32
|
+
`.timsquad/ssot/ADR-XXX.md`
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 피드백 라우팅 규칙. Level 1/2/3 분류 기준과 라우팅.
|
|
3
|
+
globs:
|
|
4
|
+
- ".timsquad/feedback/**"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 피드백 라우팅
|
|
8
|
+
|
|
9
|
+
| Level | 심각도 | 트리거 | 라우팅 | 액션 |
|
|
10
|
+
|-------|--------|--------|--------|------|
|
|
11
|
+
| L1 | Minor/Major | 테스트 실패, 린트 오류, 코드 스타일 | @tsq-developer | 수정 요청 |
|
|
12
|
+
| L2 | Major | API 불일치, 설계 문제, 성능 구조 | PM 직접 처리 | SSOT 수정 |
|
|
13
|
+
| L3 | Critical | 요구사항 오류, 비즈니스 로직, 스코프 변경 | PM → 사용자 | 승인 요청 |
|
|
14
|
+
|
|
15
|
+
## 규칙
|
|
16
|
+
- User 승인 없이 Level 3 변경 금지
|
|
17
|
+
- 모든 피드백에 Level 분류 필수
|
|
18
|
+
- `tsq feedback "{설명}"` 으로 기록 (직접 파일 생성 금지)
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Phase 관리 규칙. Phase 전환, 허용/금지 작업, 종료 조건.
|
|
3
|
+
globs:
|
|
4
|
+
- ".timsquad/state/**"
|
|
5
|
+
- ".timsquad/ssot/**"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Phase 관리
|
|
9
|
+
|
|
10
|
+
현재 Phase: `.timsquad/state/current-phase.json` 확인
|
|
11
|
+
|
|
12
|
+
| Phase | 허용 작업 | 금지 | 종료 조건 |
|
|
13
|
+
|-------|----------|------|----------|
|
|
14
|
+
| planning | SSOT 작성, 아키텍처 설계, ADR | 코드 구현 | User 승인 |
|
|
15
|
+
| design | UI/UX 설계, 와이어프레임 | 코드 구현 | User 승인 |
|
|
16
|
+
| implementation | 코드 구현, 테스트 작성 | SSOT 임의 수정 | 테스트+린트 통과 |
|
|
17
|
+
| review | 코드 리뷰, 검증 | 코드 직접 수정 | QA 체크리스트 통과 |
|
|
18
|
+
| security | 보안 검토 | 코드 직접 수정 | Critical/High 취약점 없음 |
|
|
19
|
+
| deployment | 배포 | - | 배포 완료 |
|
|
20
|
+
|
|
21
|
+
## Phase 종료 시
|
|
22
|
+
- `skills/retrospective/SKILL.md`를 활용하여 회고 실행
|
|
23
|
+
- Phase 전환 조건 미충족 시 다음 Phase 진행 금지
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: PM 진행 상황 보고 형식.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# 보고 형식
|
|
6
|
+
|
|
7
|
+
## 진행 상황 보고 (사용자에게)
|
|
8
|
+
|
|
9
|
+
```markdown
|
|
10
|
+
## 현재 상태
|
|
11
|
+
- Phase: {current_phase}
|
|
12
|
+
- 진행률: {progress}%
|
|
13
|
+
|
|
14
|
+
## 완료된 작업
|
|
15
|
+
- {completed_task_1}
|
|
16
|
+
- {completed_task_2}
|
|
17
|
+
|
|
18
|
+
## 진행 중인 작업
|
|
19
|
+
- {in_progress_task}
|
|
20
|
+
|
|
21
|
+
## 다음 단계
|
|
22
|
+
- {next_step}
|
|
23
|
+
|
|
24
|
+
## 필요한 결정/승인
|
|
25
|
+
- {decision_needed} (있는 경우)
|
|
26
|
+
```
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 시퀀스 관리 규칙. 네이밍, 자동화 파이프라인, 수동 모드.
|
|
3
|
+
globs:
|
|
4
|
+
- ".timsquad/logs/**"
|
|
5
|
+
- ".timsquad/state/workspace.xml"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# 시퀀스 관리
|
|
9
|
+
|
|
10
|
+
태스크를 시퀀스로 그룹화하여 관리합니다.
|
|
11
|
+
|
|
12
|
+
## PM 자동 등록 프로토콜
|
|
13
|
+
|
|
14
|
+
사용자가 작업을 요청하면 `.timsquad/config.yaml`의 `naming` 섹션을 읽고
|
|
15
|
+
Phase/Sequence/Task ID를 **자동 생성**하여 등록하세요. 사용자에게 수동 명령을 요구하지 마세요.
|
|
16
|
+
|
|
17
|
+
**네이밍 규칙** (config.yaml → naming 참조):
|
|
18
|
+
- Phase ID: `P{N}` — planning=P1, design=P2, implementation=P3, review=P4, security=P5, deployment=P6
|
|
19
|
+
- Sequence ID: `P{N}-S{NNN}` — 페이즈 내 시퀀스 번호 (zero-padded)
|
|
20
|
+
- Task ID: `P{N}-S{NNN}-T{NNN}` — 시퀀스 내 태스크 번호 (zero-padded)
|
|
21
|
+
- 번호는 `tsq wf status`로 기존 시퀀스를 확인한 후 이어서 부여
|
|
22
|
+
|
|
23
|
+
**흐름 예시**:
|
|
24
|
+
```
|
|
25
|
+
사용자: "인증 기능이랑 결제 API 구현해줘"
|
|
26
|
+
PM 내부 처리:
|
|
27
|
+
1. config.yaml → naming.phase.order → implementation = P3
|
|
28
|
+
2. tsq wf set-phase P3
|
|
29
|
+
3. tsq wf add-sequence P3-S001 --agents developer,dba
|
|
30
|
+
4. tsq wf add-sequence P3-S002 --agents developer,security
|
|
31
|
+
5. @tsq-developer "P3-S001: 인증 구현"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 자동화 파이프라인 (데몬 기반)
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
SessionStart → tsq daemon start
|
|
38
|
+
├─ JSONL 스트림 실시간 감시
|
|
39
|
+
├─ 인메모리 메타인덱스 로드
|
|
40
|
+
└─ 소스 파일 변경 감시
|
|
41
|
+
|
|
42
|
+
SubagentStop 감지 시:
|
|
43
|
+
├─ L1 태스크 로그 자동 생성
|
|
44
|
+
├─ workflow.json 업데이트
|
|
45
|
+
└─ 시퀀스 완료 → L2 자동 → 페이즈 완료 → L3 + Gate + 회고
|
|
46
|
+
|
|
47
|
+
SessionEnd → tsq daemon stop
|
|
48
|
+
├─ worklog markdown 생성
|
|
49
|
+
├─ 최종 메트릭 갱신
|
|
50
|
+
└─ 정리
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 자동화 토글
|
|
54
|
+
```bash
|
|
55
|
+
tsq wf config sequence_log off # L2 자동 생성 끄기
|
|
56
|
+
tsq wf config retro off # 자동 회고 끄기
|
|
57
|
+
tsq wf status # 현재 상태 확인
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 수동 모드 (자동화 꺼진 경우)
|
|
61
|
+
|
|
62
|
+
### Architect 호출
|
|
63
|
+
시퀀스 완료 후 `@tsq-architect` 호출:
|
|
64
|
+
- `seq_id`, `task_logs`, `ssot_refs` 필수
|
|
65
|
+
- 보고서 저장: `.timsquad/reports/{SEQ-ID}-report.md`
|
|
66
|
+
|
|
67
|
+
### 수동 L2/L3 생성
|
|
68
|
+
```bash
|
|
69
|
+
tsq log sequence create {SEQ-ID} --phase {phase} --report {path} --verdict proceed
|
|
70
|
+
tsq log phase create {phase-id} --sequences "SEQ-01,SEQ-02"
|
|
71
|
+
tsq log phase gate {phase-id}
|
|
72
|
+
```
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: workspace.xml 실시간 상태 관리 규칙.
|
|
3
|
+
globs:
|
|
4
|
+
- ".timsquad/state/workspace.xml"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Workspace 동기화
|
|
8
|
+
|
|
9
|
+
`.timsquad/state/workspace.xml`은 에이전트 간 실시간 상태 공유 파일입니다.
|
|
10
|
+
|
|
11
|
+
## 필수 업데이트 시점
|
|
12
|
+
- 작업 시작 시: `<current-task>` 업데이트
|
|
13
|
+
- 작업 완료 시: `<completed-tasks>`로 이동, `<pending-tasks>` 업데이트
|
|
14
|
+
- 에이전트 전환 시: `<handoff>` 작성
|
|
15
|
+
- 이슈 발생 시: `<blockers>` 추가
|
|
16
|
+
- 승인 필요 시: `<pending-approvals>` 추가
|
|
17
|
+
|
|
18
|
+
## 주요 노드
|
|
19
|
+
```
|
|
20
|
+
/workspace/current-task - 현재 진행 중인 작업
|
|
21
|
+
/workspace/pending-tasks - 대기 중인 작업 목록
|
|
22
|
+
/workspace/completed-tasks - 완료된 작업 (최근 10개)
|
|
23
|
+
/workspace/handoff - 에이전트 간 인수인계 정보
|
|
24
|
+
/workspace/blockers - 블로킹 이슈
|
|
25
|
+
/workspace/pending-approvals - 승인 대기 항목
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Handoff 프로토콜
|
|
29
|
+
에이전트 전환 시 `<handoff>` 섹션에 기록:
|
|
30
|
+
- from/to: 이전/다음 에이전트
|
|
31
|
+
- message: 전달 사항 (특이사항, 주의점)
|
|
32
|
+
- attachments: 참조할 SSOT 문서
|
|
33
|
+
- action-items: 해야 할 작업 목록
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Completion Guard — Stop Hook
|
|
3
|
+
# Warns when stopping without test execution during implementation phase.
|
|
4
|
+
# First version: warn only (not block), to avoid disrupting workflow.
|
|
5
|
+
#
|
|
6
|
+
# Input: JSON via stdin (Claude Code hook protocol)
|
|
7
|
+
# Output: JSON with systemMessage (warning if applicable)
|
|
8
|
+
|
|
9
|
+
set -e
|
|
10
|
+
|
|
11
|
+
# Find project root
|
|
12
|
+
PROJECT_ROOT="$(pwd)"
|
|
13
|
+
while [ "$PROJECT_ROOT" != "/" ]; do
|
|
14
|
+
if [ -d "$PROJECT_ROOT/.timsquad" ]; then
|
|
15
|
+
break
|
|
16
|
+
fi
|
|
17
|
+
PROJECT_ROOT="$(dirname "$PROJECT_ROOT")"
|
|
18
|
+
done
|
|
19
|
+
|
|
20
|
+
# If not in a TimSquad project, allow
|
|
21
|
+
if [ ! -d "$PROJECT_ROOT/.timsquad" ]; then
|
|
22
|
+
echo '{}'
|
|
23
|
+
exit 0
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Read current phase
|
|
27
|
+
PHASE_FILE="$PROJECT_ROOT/.timsquad/state/current-phase.json"
|
|
28
|
+
if [ ! -f "$PHASE_FILE" ]; then
|
|
29
|
+
echo '{}'
|
|
30
|
+
exit 0
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
PHASE=$(jq -r '.phase // "unknown"' "$PHASE_FILE" 2>/dev/null)
|
|
34
|
+
|
|
35
|
+
# Only check during implementation phase
|
|
36
|
+
if [ "$PHASE" != "implementation" ]; then
|
|
37
|
+
echo '{}'
|
|
38
|
+
exit 0
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Check session metrics for test execution
|
|
42
|
+
SESSION_STATE="$PROJECT_ROOT/.timsquad/.daemon/session-state.json"
|
|
43
|
+
if [ ! -f "$SESSION_STATE" ]; then
|
|
44
|
+
echo '{"systemMessage":"[Completion Guard] 세션 메트릭을 확인할 수 없습니다. 테스트 실행 여부를 확인해주세요."}'
|
|
45
|
+
exit 0
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Check if any bash commands included test execution
|
|
49
|
+
BASH_COMMANDS=$(jq -r '.metrics.bashCommands // 0' "$SESSION_STATE" 2>/dev/null)
|
|
50
|
+
|
|
51
|
+
if [ "$BASH_COMMANDS" -eq 0 ]; then
|
|
52
|
+
echo '{"systemMessage":"[Completion Guard] 이번 세션에서 테스트가 실행되지 않았습니다. 완료 전 테스트 실행을 권장합니다."}'
|
|
53
|
+
exit 0
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
# Allow
|
|
57
|
+
echo '{}'
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Phase Guard — PreToolUse Hook
|
|
3
|
+
# Enforces phase restrictions on file operations.
|
|
4
|
+
# planning/design phase: blocks src/** writes
|
|
5
|
+
# implementation phase: blocks .timsquad/ssot/** writes
|
|
6
|
+
#
|
|
7
|
+
# Input: JSON via stdin (Claude Code hook protocol)
|
|
8
|
+
# Output: JSON with permissionDecision (allow/deny)
|
|
9
|
+
|
|
10
|
+
set -e
|
|
11
|
+
|
|
12
|
+
# Read hook input from stdin (non-blocking)
|
|
13
|
+
INPUT=""
|
|
14
|
+
if read -t 1 -r line; then
|
|
15
|
+
INPUT="$line"
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
# If no input, allow (fail-open for safety)
|
|
19
|
+
if [ -z "$INPUT" ]; then
|
|
20
|
+
echo '{"hookSpecificOutput":{"permissionDecision":"allow"}}'
|
|
21
|
+
exit 0
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
# Extract file path from tool input
|
|
25
|
+
FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // .tool_input.filePath // ""' 2>/dev/null)
|
|
26
|
+
|
|
27
|
+
# If no file path, allow (not a file operation)
|
|
28
|
+
if [ -z "$FILE_PATH" ] || [ "$FILE_PATH" = "null" ]; then
|
|
29
|
+
echo '{"hookSpecificOutput":{"permissionDecision":"allow"}}'
|
|
30
|
+
exit 0
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
# Find project root (look for .timsquad directory)
|
|
34
|
+
PROJECT_ROOT="$(pwd)"
|
|
35
|
+
while [ "$PROJECT_ROOT" != "/" ]; do
|
|
36
|
+
if [ -d "$PROJECT_ROOT/.timsquad" ]; then
|
|
37
|
+
break
|
|
38
|
+
fi
|
|
39
|
+
PROJECT_ROOT="$(dirname "$PROJECT_ROOT")"
|
|
40
|
+
done
|
|
41
|
+
|
|
42
|
+
# If not in a TimSquad project, allow
|
|
43
|
+
if [ ! -d "$PROJECT_ROOT/.timsquad" ]; then
|
|
44
|
+
echo '{"hookSpecificOutput":{"permissionDecision":"allow"}}'
|
|
45
|
+
exit 0
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Read current phase
|
|
49
|
+
PHASE_FILE="$PROJECT_ROOT/.timsquad/state/current-phase.json"
|
|
50
|
+
if [ ! -f "$PHASE_FILE" ]; then
|
|
51
|
+
echo '{"hookSpecificOutput":{"permissionDecision":"allow"}}'
|
|
52
|
+
exit 0
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
PHASE=$(jq -r '.phase // "unknown"' "$PHASE_FILE" 2>/dev/null)
|
|
56
|
+
|
|
57
|
+
# Normalize file path (make relative to project root)
|
|
58
|
+
REL_PATH="${FILE_PATH#$PROJECT_ROOT/}"
|
|
59
|
+
|
|
60
|
+
# Phase enforcement rules
|
|
61
|
+
case "$PHASE" in
|
|
62
|
+
planning|design)
|
|
63
|
+
# Block source code modifications during planning/design
|
|
64
|
+
if echo "$REL_PATH" | grep -qE '^src/|^lib/|^app/|^pages/|^components/'; then
|
|
65
|
+
echo "{\"hookSpecificOutput\":{\"permissionDecision\":\"deny\"},\"systemMessage\":\"[Phase Guard] $PHASE phase에서 코드 수정이 금지됩니다. SSOT 문서 작성을 먼저 완료하세요.\"}"
|
|
66
|
+
exit 0
|
|
67
|
+
fi
|
|
68
|
+
;;
|
|
69
|
+
implementation)
|
|
70
|
+
# Block SSOT modifications during implementation (prevent drift)
|
|
71
|
+
if echo "$REL_PATH" | grep -qE '^\.timsquad/ssot/'; then
|
|
72
|
+
echo "{\"hookSpecificOutput\":{\"permissionDecision\":\"deny\"},\"systemMessage\":\"[Phase Guard] implementation phase에서 SSOT 직접 수정이 금지됩니다. 변경이 필요하면 PM에게 L2 피드백을 보고하세요.\"}"
|
|
73
|
+
exit 0
|
|
74
|
+
fi
|
|
75
|
+
;;
|
|
76
|
+
esac
|
|
77
|
+
|
|
78
|
+
# Default: allow
|
|
79
|
+
echo '{"hookSpecificOutput":{"permissionDecision":"allow"}}'
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{
|
|
2
|
+
"hooks": {
|
|
3
|
+
"PreToolUse": [
|
|
4
|
+
{
|
|
5
|
+
"matcher": "Write|Edit",
|
|
6
|
+
"hooks": [
|
|
7
|
+
{
|
|
8
|
+
"type": "command",
|
|
9
|
+
"command": "bash .claude/scripts/phase-guard.sh 2>/dev/null || true",
|
|
10
|
+
"timeout": 3
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"SessionStart": [
|
|
16
|
+
{
|
|
17
|
+
"hooks": [
|
|
18
|
+
{
|
|
19
|
+
"type": "command",
|
|
20
|
+
"command": "tsq daemon start 2>/dev/null || true",
|
|
21
|
+
"timeout": 5
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"SubagentStart": [
|
|
27
|
+
{
|
|
28
|
+
"hooks": [
|
|
29
|
+
{
|
|
30
|
+
"type": "command",
|
|
31
|
+
"command": "tsq daemon notify subagent-start 2>/dev/null || true",
|
|
32
|
+
"timeout": 3
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"SubagentStop": [
|
|
38
|
+
{
|
|
39
|
+
"hooks": [
|
|
40
|
+
{
|
|
41
|
+
"type": "command",
|
|
42
|
+
"command": "tsq daemon notify subagent-stop 2>/dev/null || true",
|
|
43
|
+
"timeout": 5
|
|
44
|
+
}
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
],
|
|
48
|
+
"PostToolUse": [
|
|
49
|
+
{
|
|
50
|
+
"hooks": [
|
|
51
|
+
{
|
|
52
|
+
"type": "command",
|
|
53
|
+
"command": "tsq daemon notify tool-use --status success 2>/dev/null || true",
|
|
54
|
+
"timeout": 3
|
|
55
|
+
}
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"PostToolUseFailure": [
|
|
60
|
+
{
|
|
61
|
+
"hooks": [
|
|
62
|
+
{
|
|
63
|
+
"type": "command",
|
|
64
|
+
"command": "tsq daemon notify tool-use --status failure 2>/dev/null || true",
|
|
65
|
+
"timeout": 3
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"Stop": [
|
|
71
|
+
{
|
|
72
|
+
"hooks": [
|
|
73
|
+
{
|
|
74
|
+
"type": "command",
|
|
75
|
+
"command": "tsq daemon notify stop 2>/dev/null || true",
|
|
76
|
+
"timeout": 3
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"type": "command",
|
|
80
|
+
"command": "bash .claude/scripts/completion-guard.sh 2>/dev/null || true",
|
|
81
|
+
"timeout": 5
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
],
|
|
86
|
+
"SessionEnd": [
|
|
87
|
+
{
|
|
88
|
+
"hooks": [
|
|
89
|
+
{
|
|
90
|
+
"type": "command",
|
|
91
|
+
"command": "tsq daemon notify session-end 2>/dev/null || true && tsq daemon stop 2>/dev/null || true",
|
|
92
|
+
"timeout": 15
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
}
|
|
98
|
+
}
|