timsquad 3.6.0 → 3.7.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 +103 -111
- package/README.md +100 -108
- package/dist/commands/init.js +4 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/{upgrade.d.ts → update.d.ts} +3 -3
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/{upgrade.js → update.js} +12 -17
- package/dist/commands/update.js.map +1 -0
- package/dist/daemon/event-queue.d.ts +3 -11
- package/dist/daemon/event-queue.d.ts.map +1 -1
- package/dist/daemon/event-queue.js +62 -203
- package/dist/daemon/event-queue.js.map +1 -1
- package/dist/daemon/index.d.ts +1 -1
- package/dist/daemon/index.d.ts.map +1 -1
- package/dist/daemon/index.js +15 -14
- package/dist/daemon/index.js.map +1 -1
- package/dist/index.js +3 -43
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-generator.d.ts.map +1 -1
- package/dist/lib/agent-generator.js +10 -10
- package/dist/lib/agent-generator.js.map +1 -1
- package/dist/lib/compile-rules.d.ts.map +1 -1
- package/dist/lib/compile-rules.js +37 -4
- package/dist/lib/compile-rules.js.map +1 -1
- package/dist/lib/compiler.d.ts +1 -0
- package/dist/lib/compiler.d.ts.map +1 -1
- package/dist/lib/compiler.js +67 -11
- package/dist/lib/compiler.js.map +1 -1
- package/dist/{commands/log.d.ts → lib/log-utils.d.ts} +7 -15
- package/dist/lib/log-utils.d.ts.map +1 -0
- package/dist/lib/log-utils.js +347 -0
- package/dist/lib/log-utils.js.map +1 -0
- package/dist/lib/skill-generator.d.ts.map +1 -1
- package/dist/lib/skill-generator.js +4 -44
- package/dist/lib/skill-generator.js.map +1 -1
- package/dist/lib/ssot-map.d.ts.map +1 -1
- package/dist/lib/ssot-map.js +3 -0
- package/dist/lib/ssot-map.js.map +1 -1
- package/dist/lib/template.d.ts +10 -3
- package/dist/lib/template.d.ts.map +1 -1
- package/dist/lib/template.js +136 -22
- package/dist/lib/template.js.map +1 -1
- package/dist/lib/upgrade-backup.js +1 -1
- package/dist/lib/upgrade-backup.js.map +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +34 -34
- package/dist/types/config.js.map +1 -1
- package/dist/types/feedback.d.ts +1 -54
- package/dist/types/feedback.d.ts.map +1 -1
- package/dist/types/feedback.js +1 -22
- package/dist/types/feedback.js.map +1 -1
- package/dist/types/project.d.ts +5 -0
- package/dist/types/project.d.ts.map +1 -1
- package/dist/types/project.js +15 -0
- package/dist/types/project.js.map +1 -1
- package/dist/types/ssot-map.d.ts +2 -0
- package/dist/types/ssot-map.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/base/agents/base/tsq-architect.md +1 -1
- package/templates/base/agents/base/tsq-dba.md +3 -1
- package/templates/base/agents/base/tsq-designer.md +3 -1
- package/templates/base/agents/base/tsq-developer.md +3 -1
- package/templates/base/agents/base/tsq-librarian.md +1 -1
- package/templates/base/agents/base/tsq-qa.md +3 -1
- package/templates/base/agents/base/tsq-security.md +3 -1
- package/templates/base/agents/overlays/platform/claude-code.md +2 -2
- package/templates/base/config.template.yaml +17 -28
- package/templates/base/knowledge/templates/task-result.md +5 -10
- package/templates/base/skills/_template/SKILL.md +1 -3
- package/templates/base/skills/{architecture → tsq-architecture}/SKILL.md +2 -2
- package/templates/base/skills/tsq-audit/SKILL.md +74 -0
- package/templates/base/skills/{methodology/bdd → tsq-bdd}/SKILL.md +14 -9
- package/templates/base/skills/{coding → tsq-coding}/SKILL.md +2 -4
- package/templates/base/skills/tsq-controller/SKILL.md +81 -0
- package/templates/base/skills/{mobile/dart → tsq-dart}/SKILL.md +5 -3
- package/templates/base/skills/{database → tsq-database}/SKILL.md +5 -2
- package/templates/base/skills/{methodology/ddd → tsq-ddd}/SKILL.md +15 -10
- package/templates/base/skills/{methodology/debugging → tsq-debugging}/SKILL.md +2 -2
- package/templates/base/skills/tsq-decompose/SKILL.md +117 -0
- package/templates/base/skills/tsq-delete/SKILL.md +72 -0
- package/templates/base/skills/{mobile/flutter → tsq-flutter}/SKILL.md +6 -3
- package/templates/base/skills/tsq-grill/SKILL.md +86 -0
- package/templates/base/skills/{backend/node → tsq-hono}/SKILL.md +6 -4
- package/templates/base/skills/tsq-librarian/SKILL.md +78 -0
- package/templates/base/skills/tsq-log/SKILL.md +30 -0
- package/templates/base/skills/{frontend/nextjs → tsq-nextjs}/SKILL.md +14 -9
- package/templates/base/skills/{planning → tsq-planning}/SKILL.md +2 -2
- package/templates/base/skills/{database/prisma → tsq-prisma}/SKILL.md +15 -9
- package/templates/base/skills/{product-audit → tsq-product-audit}/SKILL.md +2 -4
- package/templates/base/skills/{prompt-engineering → tsq-prompt}/SKILL.md +6 -4
- package/templates/base/skills/tsq-protocol/SKILL.md +85 -33
- package/templates/base/skills/{frontend/react → tsq-react}/SKILL.md +6 -3
- package/templates/base/skills/tsq-retro/SKILL.md +86 -0
- package/templates/base/skills/tsq-retro/references/feedback-guide.md +58 -0
- package/templates/base/skills/tsq-retro/references/improve-protocol.md +87 -0
- package/templates/base/skills/{security → tsq-security}/SKILL.md +2 -4
- package/templates/base/skills/{spec → tsq-spec}/SKILL.md +4 -6
- package/templates/base/skills/{stability-verification → tsq-stability}/SKILL.md +3 -3
- package/templates/base/skills/tsq-start/SKILL.md +90 -0
- package/templates/base/skills/tsq-start/references/onboarding-questions.md +177 -0
- package/templates/base/skills/tsq-status/SKILL.md +32 -0
- package/templates/base/skills/{methodology/tdd → tsq-tdd}/SKILL.md +6 -3
- package/templates/base/skills/{testing → tsq-testing}/SKILL.md +5 -7
- package/templates/base/skills/{typescript → tsq-typescript}/SKILL.md +2 -2
- package/templates/base/skills/{ui-design → tsq-ui}/SKILL.md +2 -2
- package/templates/base/skills/tsq-update/SKILL.md +48 -0
- package/templates/base/timsquad/constraints/competency-framework.xml +2 -2
- package/templates/base/timsquad/constraints/ssot-schema.xml +2 -2
- package/templates/base/timsquad/process/phase-checklist.yaml +1 -1
- package/templates/base/timsquad/process/state-machine.xml +2 -2
- package/templates/base/timsquad/process/validation-rules.xml +8 -8
- package/templates/base/timsquad/process/workflow-base.xml +8 -8
- package/templates/base/timsquad/retrospective/cycle-report.template.md +2 -2
- package/templates/base/timsquad/retrospective/patterns/failure-patterns.md +1 -1
- package/templates/base/timsquad/retrospective/patterns/success-patterns.md +2 -2
- package/templates/base/timsquad/retrospective/retrospective-state.xml +2 -2
- package/templates/base/timsquad/ssot/audit-trail-spec.template.md +155 -0
- package/templates/base/timsquad/ssot/compliance-matrix.template.md +105 -0
- package/templates/base/timsquad/ssot/component-map.template.md +181 -0
- package/templates/base/timsquad/ssot/data-design.template.md +4 -4
- package/templates/base/timsquad/ssot/deployment-spec.template.md +29 -22
- package/templates/base/timsquad/ssot/env-config.template.md +4 -2
- package/templates/base/timsquad/ssot/error-codes.template.md +3 -3
- package/templates/base/timsquad/ssot/functional-spec.template.md +40 -3
- package/templates/base/timsquad/ssot/glossary.template.md +2 -2
- package/templates/base/timsquad/ssot/infra-topology.template.md +191 -0
- package/templates/base/timsquad/ssot/integration-spec.template.md +2 -2
- package/templates/base/timsquad/ssot/monitoring-spec.template.md +185 -0
- package/templates/base/timsquad/ssot/navigation-map.template.md +154 -0
- package/templates/base/timsquad/ssot/performance-budget.template.md +132 -0
- package/templates/base/timsquad/ssot/planning.template.md +3 -3
- package/templates/base/timsquad/ssot/prd/_template.md +73 -0
- package/templates/base/timsquad/ssot/prd.template.md +10 -21
- package/templates/base/timsquad/ssot/requirements.template.md +3 -3
- package/templates/base/timsquad/ssot/sdk-spec.template.md +223 -0
- package/templates/base/timsquad/ssot/service-spec.template.md +3 -3
- package/templates/base/timsquad/ssot/state-machine.template.md +127 -0
- package/templates/base/timsquad/ssot/ui-ux-spec.template.md +43 -3
- package/templates/base/timsquad/ssot-map.template.yaml +28 -0
- package/templates/base/timsquad/state/workspace.xml +11 -11
- package/templates/platforms/claude-code/rules/adr-rules.md +1 -1
- package/templates/platforms/claude-code/rules/build-gate.md +1 -1
- package/templates/platforms/claude-code/rules/completion-verification.md +0 -2
- package/templates/platforms/claude-code/rules/context-monitor.md +1 -1
- package/templates/platforms/claude-code/rules/feedback-routing.md +2 -2
- package/templates/platforms/claude-code/rules/phase-management.md +2 -2
- package/templates/platforms/claude-code/rules/plan-review.md +2 -2
- package/templates/platforms/claude-code/rules/quality-guards.md +0 -2
- package/templates/platforms/claude-code/rules/sequence-management.md +15 -15
- package/templates/platforms/claude-code/rules/session-notes.md +1 -1
- package/templates/platforms/claude-code/rules/workspace-sync.md +1 -1
- package/templates/platforms/claude-code/scripts/build-gate.sh +6 -1
- package/templates/platforms/claude-code/scripts/change-scope-guard.sh +1 -4
- package/templates/platforms/claude-code/scripts/check-capability.sh +68 -0
- package/templates/platforms/claude-code/scripts/completion-guard.sh +62 -4
- package/templates/platforms/claude-code/scripts/context-restore.sh +33 -6
- package/templates/platforms/claude-code/scripts/phase-guard.sh +2 -5
- package/templates/platforms/claude-code/scripts/pre-compact.sh +3 -3
- package/templates/platforms/claude-code/scripts/safe-guard.sh +2 -5
- package/templates/platforms/claude-code/scripts/subagent-start.sh +11 -0
- package/templates/platforms/claude-code/scripts/subagent-stop.sh +11 -0
- package/templates/platforms/claude-code/settings.json +20 -74
- package/templates/project-types/api-backend/config.yaml +9 -5
- package/templates/project-types/api-backend/process/workflow.xml +2 -2
- package/templates/project-types/fintech/config.yaml +13 -19
- package/templates/project-types/fintech/ssot/audit-trail-spec.template.md +207 -0
- package/templates/project-types/fintech/ssot/compliance-matrix.template.md +187 -0
- package/templates/project-types/infra/config.yaml +7 -4
- package/templates/project-types/infra/process/workflow.xml +3 -3
- package/templates/project-types/mobile-app/config.yaml +8 -14
- package/templates/project-types/mobile-app/process/workflow.xml +4 -4
- package/templates/project-types/platform/config.yaml +8 -5
- package/templates/project-types/platform/process/workflow.xml +3 -3
- package/templates/project-types/web-app/config.yaml +9 -15
- package/templates/project-types/web-app/process/workflow.xml +6 -6
- package/templates/project-types/web-service/config.yaml +10 -19
- package/templates/project-types/web-service/process/workflow.xml +6 -6
- package/dist/commands/audit.d.ts +0 -22
- package/dist/commands/audit.d.ts.map +0 -1
- package/dist/commands/audit.js +0 -233
- package/dist/commands/audit.js.map +0 -1
- package/dist/commands/compile.d.ts +0 -3
- package/dist/commands/compile.d.ts.map +0 -1
- package/dist/commands/compile.js +0 -251
- package/dist/commands/compile.js.map +0 -1
- package/dist/commands/feedback.d.ts +0 -12
- package/dist/commands/feedback.d.ts.map +0 -1
- package/dist/commands/feedback.js +0 -382
- package/dist/commands/feedback.js.map +0 -1
- package/dist/commands/full.d.ts +0 -3
- package/dist/commands/full.d.ts.map +0 -1
- package/dist/commands/full.js +0 -88
- package/dist/commands/full.js.map +0 -1
- package/dist/commands/git/commit.d.ts +0 -3
- package/dist/commands/git/commit.d.ts.map +0 -1
- package/dist/commands/git/commit.js +0 -85
- package/dist/commands/git/commit.js.map +0 -1
- package/dist/commands/git/index.d.ts +0 -5
- package/dist/commands/git/index.d.ts.map +0 -1
- package/dist/commands/git/index.js +0 -5
- package/dist/commands/git/index.js.map +0 -1
- package/dist/commands/git/pr.d.ts +0 -3
- package/dist/commands/git/pr.d.ts.map +0 -1
- package/dist/commands/git/pr.js +0 -139
- package/dist/commands/git/pr.js.map +0 -1
- package/dist/commands/git/release.d.ts +0 -3
- package/dist/commands/git/release.d.ts.map +0 -1
- package/dist/commands/git/release.js +0 -153
- package/dist/commands/git/release.js.map +0 -1
- package/dist/commands/git/sync.d.ts +0 -3
- package/dist/commands/git/sync.d.ts.map +0 -1
- package/dist/commands/git/sync.js +0 -132
- package/dist/commands/git/sync.js.map +0 -1
- package/dist/commands/improve.d.ts +0 -3
- package/dist/commands/improve.d.ts.map +0 -1
- package/dist/commands/improve.js +0 -286
- package/dist/commands/improve.js.map +0 -1
- package/dist/commands/knowledge.d.ts +0 -3
- package/dist/commands/knowledge.d.ts.map +0 -1
- package/dist/commands/knowledge.js +0 -316
- package/dist/commands/knowledge.js.map +0 -1
- package/dist/commands/log.d.ts.map +0 -1
- package/dist/commands/log.js +0 -1468
- package/dist/commands/log.js.map +0 -1
- package/dist/commands/meta-index.d.ts +0 -3
- package/dist/commands/meta-index.d.ts.map +0 -1
- package/dist/commands/meta-index.js +0 -431
- package/dist/commands/meta-index.js.map +0 -1
- package/dist/commands/metrics.d.ts +0 -3
- package/dist/commands/metrics.d.ts.map +0 -1
- package/dist/commands/metrics.js +0 -843
- package/dist/commands/metrics.js.map +0 -1
- package/dist/commands/quick.d.ts +0 -3
- package/dist/commands/quick.d.ts.map +0 -1
- package/dist/commands/quick.js +0 -136
- package/dist/commands/quick.js.map +0 -1
- package/dist/commands/retro.d.ts +0 -3
- package/dist/commands/retro.d.ts.map +0 -1
- package/dist/commands/retro.js +0 -885
- package/dist/commands/retro.js.map +0 -1
- package/dist/commands/session.d.ts +0 -3
- package/dist/commands/session.d.ts.map +0 -1
- package/dist/commands/session.js +0 -346
- package/dist/commands/session.js.map +0 -1
- package/dist/commands/skills.d.ts +0 -12
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js +0 -228
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/status.d.ts +0 -3
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -127
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/upgrade.d.ts.map +0 -1
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/commands/watch.d.ts +0 -3
- package/dist/commands/watch.d.ts.map +0 -1
- package/dist/commands/watch.js +0 -213
- package/dist/commands/watch.js.map +0 -1
- package/dist/commands/workflow.d.ts +0 -5
- package/dist/commands/workflow.d.ts.map +0 -1
- package/dist/commands/workflow.js +0 -781
- package/dist/commands/workflow.js.map +0 -1
- package/templates/base/skills/audit/SKILL.md +0 -66
- package/templates/base/skills/controller/SKILL.md +0 -77
- package/templates/base/skills/controller/delegation/developer.md +0 -25
- package/templates/base/skills/controller/delegation/librarian.md +0 -33
- package/templates/base/skills/controller/delegation/reviewer.md +0 -19
- package/templates/base/skills/controller/triggers/phase-complete.md +0 -25
- package/templates/base/skills/controller/triggers/sequence-complete.md +0 -15
- package/templates/base/skills/controller/triggers/ssot-changed.md +0 -14
- package/templates/base/skills/controller/triggers/task-complete.md +0 -14
- package/templates/base/skills/librarian/SKILL.md +0 -53
- package/templates/base/skills/main-session-constraints/SKILL.md +0 -62
- package/templates/base/skills/retrospective/SKILL.md +0 -77
- package/templates/base/skills/review/SKILL.md +0 -72
- package/templates/base/skills/tsq-cli/SKILL.md +0 -73
- package/templates/base/skills/tsq-cli/references/cli-reference.md +0 -92
- package/templates/base/timsquad/feedback/feedback-router.sh +0 -341
- package/templates/base/timsquad/feedback/routing-rules.yaml +0 -352
- package/templates/platforms/claude-code/CLAUDE.md.template +0 -89
- package/templates/platforms/claude-code/rules/skill-suggest.md +0 -27
- package/templates/platforms/claude-code/scripts/skill-inject.sh +0 -216
- package/templates/platforms/claude-code/scripts/skill-rules.json +0 -95
- package/templates/platforms/claude-code/scripts/skill-suggest.sh +0 -105
- package/templates/platforms/claude-code/scripts/subagent-inject.sh +0 -53
- /package/templates/base/skills/{architecture → tsq-architecture}/references/adr-template.md +0 -0
- /package/templates/base/skills/{architecture → tsq-architecture}/references/api-design.md +0 -0
- /package/templates/base/skills/{methodology/bdd → tsq-bdd}/rules/gherkin-patterns.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/async-patterns.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/code-organization.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/error-handling.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/patterns.md +0 -0
- /package/templates/base/skills/{coding → tsq-coding}/rules/type-safety.md +0 -0
- /package/templates/base/skills/{controller → tsq-controller}/memory/.gitkeep +0 -0
- /package/templates/base/skills/{controller → tsq-controller}/references/README.md +0 -0
- /package/templates/base/skills/{controller → tsq-controller}/rules/README.md +0 -0
- /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/async-patterns.md +0 -0
- /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/code-style.md +0 -0
- /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/null-safety.md +0 -0
- /package/templates/base/skills/{mobile/dart → tsq-dart}/rules/type-system.md +0 -0
- /package/templates/base/skills/{database → tsq-database}/rules/query-optimization.md +0 -0
- /package/templates/base/skills/{database → tsq-database}/rules/supabase-patterns.md +0 -0
- /package/templates/base/skills/{methodology/ddd → tsq-ddd}/rules/strategic-patterns.md +0 -0
- /package/templates/base/skills/{methodology/debugging → tsq-debugging}/references/root-cause-tracing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/references/ci-cd-pipeline.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/code-signing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/codemagic-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/fastlane-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/github-actions.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/store-deployment.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/ci-cd/rules/versioning.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/references/i18n-architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/arb-files.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/locale-switching.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/localization-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/plural-gender.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/i18n/rules/text-direction.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/references/monitoring-architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/analytics.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/crashlytics-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/logging.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/performance-monitoring.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/monitoring/rules/sentry-integration.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/references/api-client-architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/caching.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/connectivity.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/dio-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/error-handling.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/interceptors.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/networking/rules/retrofit-patterns.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/references/notification-architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/references/platform-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/background-processing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/deep-linking.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/fcm-setup.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/local-notifications.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/notification-handling.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/notification-permissions.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/push-notifications/rules/rich-notifications.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/references/freezed-patterns.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/references/project-structure.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/animations.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/architecture.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/navigation-routing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/performance.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/platform-adaptive.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/state-management.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/testing.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/rules/widget-conventions.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/SKILL.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/references/mobile-security-checklist.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/api-key-protection.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/authentication.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/data-protection.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/obfuscation.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/secure-storage.md +0 -0
- /package/templates/base/skills/{mobile/flutter → tsq-flutter}/security/rules/ssl-pinning.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/async-patterns.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/deployment.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/env-config.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/error-handling.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/hono-app-setup.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/jwt-auth.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/middleware.md +0 -0
- /package/templates/base/skills/{backend/node → tsq-hono}/rules/testing.md +0 -0
- /package/templates/base/skills/{frontend/nextjs → tsq-nextjs}/rules/app-router.md +0 -0
- /package/templates/base/skills/{planning → tsq-planning}/references/prd-guide.md +0 -0
- /package/templates/base/skills/{planning → tsq-planning}/references/requirements-guide.md +0 -0
- /package/templates/base/skills/{database/prisma → tsq-prisma}/rules/queries.md +0 -0
- /package/templates/base/skills/{database/prisma → tsq-prisma}/rules/schema-design.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/01-security.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/02-performance.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/03-seo.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/04-accessibility.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/05-ui-ux.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/06-architecture.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/checklists/07-functional-requirements.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/rules/audit-protocol.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/rules/false-positive-guard.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/rules/scoring-criteria.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/templates/improvement-plan-template.md +0 -0
- /package/templates/base/skills/{product-audit → tsq-product-audit}/templates/report-template.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/_sections.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/anti-patterns.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-api-routes.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-defer-await.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-dependencies.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-parallel.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/async-suspense-boundaries.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-barrel-imports.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-defer-third-party.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/bundle-dynamic-imports.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/component-conventions.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-combine-iterations.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-early-exit.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-index-maps.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/js-set-map-lookups.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-conditional-render.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-content-visibility.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rendering-hoist-jsx.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-defer-reads.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-derived-state.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-memo.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/rerender-transitions.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-after-nonblocking.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-cache-react.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/server-parallel-fetching.md +0 -0
- /package/templates/base/skills/{frontend/react → tsq-react}/rules/state-location.md +0 -0
- /package/templates/base/skills/{retrospective → tsq-retro}/references/improvement-template.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/auth-patterns.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/dependency-security.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/input-validation.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/owasp-examples.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/rules/secrets-management.md +0 -0
- /package/templates/base/skills/{security → tsq-security}/scripts/check-secrets.sh +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/references/release-checklist.md +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/references/security-fix-patterns.md +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/rules/verification-layers.md +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/rules/verification-workflow.md +0 -0
- /package/templates/base/skills/{stability-verification → tsq-stability}/scripts/verify.sh +0 -0
- /package/templates/base/skills/{methodology/tdd → tsq-tdd}/rules/real-world-example.md +0 -0
- /package/templates/base/skills/{methodology/tdd → tsq-tdd}/rules/techniques.md +0 -0
- /package/templates/base/skills/{testing → tsq-testing}/references/e2e-stability.md +0 -0
- /package/templates/base/skills/{testing → tsq-testing}/references/testing-patterns.md +0 -0
- /package/templates/base/skills/{typescript → tsq-typescript}/rules/type-patterns.md +0 -0
- /package/templates/base/skills/{typescript → tsq-typescript}/rules/utility-types.md +0 -0
package/README.ko.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
| 철학 | "Zero learning curve" | **"체계를 세우면 더 잘 된다"** |
|
|
25
25
|
| 의사결정 | LLM이 알아서 | **개발자가 컨트롤** |
|
|
26
26
|
| 우선순위 | 속도 | **품질 + 일관성** |
|
|
27
|
-
|
|
|
27
|
+
| 강제성 | 프롬프트만 (소프트) | **Hook Gate + Capability Token (하드)** |
|
|
28
28
|
| 학습 | 없음 | **회고적 학습으로 지속 개선** |
|
|
29
29
|
|
|
30
30
|
**For developers who want structure, not magic.**
|
|
@@ -66,43 +66,37 @@ tsq init -n my-app -t web-service -l 2 -y # 비대화형
|
|
|
66
66
|
|
|
67
67
|
```
|
|
68
68
|
my-app/
|
|
69
|
-
├── CLAUDE.md # PM 역할
|
|
69
|
+
├── CLAUDE.md # PM 역할 (자동 주입 ~15줄)
|
|
70
70
|
├── .claude/
|
|
71
|
-
│ ├── settings.json # Claude Code 설정
|
|
72
|
-
│ ├── rules/ #
|
|
73
|
-
│ ├── agents/ #
|
|
74
|
-
│ │ ├── tsq-architect.md # 아키텍처 설계
|
|
75
|
-
│ │ ├── tsq-developer.md # 코드 구현
|
|
76
|
-
│ │ ├── tsq-qa.md # 검증/리뷰
|
|
77
|
-
│ │ ├── tsq-security.md # 보안 검토
|
|
78
|
-
│ │ ├── tsq-dba.md # DB 설계
|
|
79
|
-
│ │
|
|
80
|
-
│
|
|
71
|
+
│ ├── settings.json # Claude Code 설정 (8개 Hook)
|
|
72
|
+
│ ├── rules/ # 경로별 규칙 (15개)
|
|
73
|
+
│ ├── agents/ # 7개 전문 에이전트
|
|
74
|
+
│ │ ├── tsq-architect.md # 아키텍처 설계
|
|
75
|
+
│ │ ├── tsq-developer.md # 코드 구현
|
|
76
|
+
│ │ ├── tsq-qa.md # 검증/리뷰
|
|
77
|
+
│ │ ├── tsq-security.md # 보안 검토
|
|
78
|
+
│ │ ├── tsq-dba.md # DB 설계
|
|
79
|
+
│ │ ├── tsq-designer.md # UI/UX 설계
|
|
80
|
+
│ │ └── tsq-librarian.md # Phase 기록
|
|
81
|
+
│ ├── skills/ # tsq-* 스킬 (프로젝트 타입에 따라 선택)
|
|
81
82
|
│ │ ├── tsq-protocol/ # 에이전트 공통 프로토콜
|
|
82
|
-
│ │ ├──
|
|
83
|
-
│ │ ├──
|
|
84
|
-
│ │ ├──
|
|
85
|
-
│ │ ├──
|
|
86
|
-
│ │ ├──
|
|
87
|
-
│ │ ├──
|
|
88
|
-
│ │ ├──
|
|
89
|
-
│ │ ├──
|
|
90
|
-
│ │
|
|
91
|
-
│ │
|
|
92
|
-
│ │ │ ├── rules/ # 감사 프로토콜, 스코어링, FP 가드
|
|
93
|
-
│ │ │ ├── checklists/ # Security ~ Functional (7개)
|
|
94
|
-
│ │ │ └── templates/ # 보고서 + 개선 계획 양식
|
|
95
|
-
│ │ ├── methodology/(tdd|bdd|ddd|debugging)/
|
|
96
|
-
│ │ └── ...
|
|
83
|
+
│ │ ├── tsq-controller/ # Context DI + 위임
|
|
84
|
+
│ │ ├── tsq-coding/ # 코딩 규칙
|
|
85
|
+
│ │ ├── tsq-testing/ # 테스트 전략
|
|
86
|
+
│ │ ├── tsq-typescript/ # TypeScript 패턴
|
|
87
|
+
│ │ ├── tsq-react/ # React (설정 시)
|
|
88
|
+
│ │ ├── tsq-nextjs/ # Next.js + Vercel 룰
|
|
89
|
+
│ │ ├── tsq-database/ # DB 설계
|
|
90
|
+
│ │ ├── tsq-product-audit/ # 제품 감사 (7개 영역)
|
|
91
|
+
│ │ ├── tsq-tdd/ # TDD 방법론
|
|
92
|
+
│ │ └── ... # 기타 (설정에 따라)
|
|
97
93
|
│ └── knowledge/ # 에이전트 참조 지식
|
|
98
|
-
│ ├── checklists/ # 보안, 접근성, SSOT 검증
|
|
99
|
-
│ └── templates/ # 출력 형식 (task-result 등)
|
|
100
94
|
└── .timsquad/
|
|
101
95
|
├── config.yaml # 프로젝트 설정
|
|
102
96
|
├── ssot/ # SSOT 문서 (레벨별 5~14개)
|
|
103
97
|
├── process/ # 워크플로우 정의
|
|
104
|
-
├── state/ # 상태 관리
|
|
105
|
-
├──
|
|
98
|
+
├── state/ # 상태 관리
|
|
99
|
+
├── trails/ # Phase 사고과정 아카이브
|
|
106
100
|
├── logs/ # 3계층 로그 (L1→L2→L3)
|
|
107
101
|
└── retrospective/ # 회고 데이터
|
|
108
102
|
```
|
|
@@ -112,25 +106,52 @@ my-app/
|
|
|
112
106
|
```bash
|
|
113
107
|
claude # Claude Code 실행
|
|
114
108
|
|
|
115
|
-
#
|
|
116
|
-
|
|
109
|
+
# 슬래시 커맨드로 모든 작업 수행
|
|
110
|
+
/tsq-start # 파이프라인 시작 + 온보딩
|
|
111
|
+
/tsq-status # 현재 상태 확인
|
|
112
|
+
/tsq-grill # Sub-PRD 심층 인터뷰
|
|
113
|
+
/tsq-decompose # Phase-Sequence-Task 계획 생성
|
|
114
|
+
|
|
115
|
+
# PM(CLAUDE.md)이 controller를 통해 에이전트에 위임
|
|
117
116
|
@tsq-developer "로그인 API 구현해줘"
|
|
118
117
|
@tsq-qa "코드 리뷰해줘"
|
|
119
118
|
```
|
|
120
119
|
|
|
121
|
-
### 4. CLI
|
|
120
|
+
### 4. CLI 명령어
|
|
122
121
|
|
|
123
122
|
```bash
|
|
124
|
-
tsq
|
|
125
|
-
tsq
|
|
126
|
-
tsq
|
|
127
|
-
tsq retro auto # 회고 자동 실행
|
|
123
|
+
tsq init # 프로젝트 초기화
|
|
124
|
+
tsq update # 스킬/에이전트 최신화
|
|
125
|
+
tsq daemon start # 백그라운드 데몬 시작
|
|
128
126
|
```
|
|
129
127
|
|
|
128
|
+
> 나머지 기능은 Claude Code 슬래시 커맨드로 전환되었습니다. [CLI 레퍼런스](docs/cli.md) 참조.
|
|
129
|
+
|
|
130
130
|
---
|
|
131
131
|
|
|
132
132
|
## 핵심 기능
|
|
133
133
|
|
|
134
|
+
### 5-Layer 강제 아키텍처
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
Layer 1: Hook Gate (100% 강제)
|
|
138
|
+
└ PreToolUse 훅 + Capability Token — 시스템 레벨 차단
|
|
139
|
+
|
|
140
|
+
Layer 2: Skill Protocol (90-95% 준수)
|
|
141
|
+
└ tsq-protocol + controller — 프로세스 안내
|
|
142
|
+
└ 에이전트별 스킬 skills: 필드로 프리로드
|
|
143
|
+
|
|
144
|
+
Layer 3: CLAUDE.md (역할 정의만)
|
|
145
|
+
└ PM 역할 + 파이프라인 사전조건 (~15줄)
|
|
146
|
+
|
|
147
|
+
Layer 4: 슬래시 커맨드 (명시적 프로세스)
|
|
148
|
+
└ /tsq-start, /tsq-status, /tsq-grill, /tsq-retro
|
|
149
|
+
|
|
150
|
+
Layer 5: 감사 (비동기 사후 추적)
|
|
151
|
+
└ 데몬이 관찰 → 세션 로그, 메트릭
|
|
152
|
+
└ 데몬 장애 시 메인 파이프라인에 영향 없음
|
|
153
|
+
```
|
|
154
|
+
|
|
134
155
|
### SSOT 문서 체계
|
|
135
156
|
|
|
136
157
|
프로젝트 레벨에 따라 필수 문서가 자동 결정됩니다:
|
|
@@ -143,88 +164,60 @@ tsq retro auto # 회고 자동 실행
|
|
|
143
164
|
|
|
144
165
|
### 에이전트 시스템
|
|
145
166
|
|
|
146
|
-
|
|
167
|
+
7개 전문 에이전트 + Controller 기반 위임:
|
|
147
168
|
|
|
148
169
|
| 에이전트 | 역할 |
|
|
149
170
|
|----------|------|
|
|
150
|
-
| `@tsq-architect` | 아키텍처 설계, ADR,
|
|
171
|
+
| `@tsq-architect` | 아키텍처 설계, ADR, 계획 검증 |
|
|
151
172
|
| `@tsq-developer` | SSOT 기반 코드 구현, TDD |
|
|
152
173
|
| `@tsq-qa` | 코드 리뷰, 테스트 검증, SSOT 적합성 |
|
|
153
174
|
| `@tsq-security` | 보안 검증, OWASP, 취약점 분석 |
|
|
154
175
|
| `@tsq-dba` | DB 설계, 쿼리 최적화, 마이그레이션 |
|
|
155
176
|
| `@tsq-designer` | UI/UX 설계, 접근성, 디자인 토큰 |
|
|
177
|
+
| `@tsq-librarian` | Phase 기록, 메모리 관리 |
|
|
156
178
|
|
|
157
|
-
###
|
|
158
|
-
|
|
159
|
-
피드백을 3단계로 자동 분류하고 적절한 액션을 실행합니다:
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
L1 (구현 수정) → Developer 자동 처리 → 승인 불필요
|
|
163
|
-
L2 (설계 수정) → in_review 상태로 전환 → Phase Gate 차단
|
|
164
|
-
L3 (기획 수정) → 사용자 승인 대기 → approve/reject 필수
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
> 상세: [docs/feedback-and-retrospective.md](docs/feedback-and-retrospective.md)
|
|
168
|
-
|
|
169
|
-
### 회고적 학습
|
|
170
|
-
|
|
171
|
-
작업 로그 → 패턴 분석 → 개선 제안 → 프롬프트/템플릿 업데이트. LLM 파인튜닝 대신 프롬프트/템플릿 개선으로 실용화합니다.
|
|
179
|
+
### 35개 스킬 (슬래시 커맨드)
|
|
172
180
|
|
|
173
|
-
|
|
174
|
-
tsq retro auto # 수집 → 분석 → 리포트 → 적용 (원클릭)
|
|
175
|
-
tsq improve analyze # 패턴 분석 + 개선 제안
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
> 상세: [docs/feedback-and-retrospective.md](docs/feedback-and-retrospective.md)
|
|
181
|
+
모든 스킬은 `tsq-*` flat namespace로 통일되었으며 슬래시 커맨드로 사용:
|
|
179
182
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
+
| 카테고리 | 스킬 |
|
|
184
|
+
|----------|------|
|
|
185
|
+
| **핵심** | `tsq-protocol`, `tsq-controller`, `tsq-start`, `tsq-status` |
|
|
186
|
+
| **코딩** | `tsq-coding`, `tsq-testing`, `tsq-typescript`, `tsq-hono` |
|
|
187
|
+
| **기획** | `tsq-planning`, `tsq-spec`, `tsq-grill`, `tsq-decompose` |
|
|
188
|
+
| **프론트엔드** | `tsq-react`, `tsq-nextjs`, `tsq-ui` |
|
|
189
|
+
| **백엔드** | `tsq-database`, `tsq-prisma`, `tsq-security` |
|
|
190
|
+
| **모바일** | `tsq-dart`, `tsq-flutter` (+ 하위 스킬 6개) |
|
|
191
|
+
| **품질** | `tsq-product-audit`, `tsq-audit`, `tsq-stability` |
|
|
192
|
+
| **방법론** | `tsq-tdd`, `tsq-bdd`, `tsq-ddd`, `tsq-debugging` |
|
|
193
|
+
| **운영** | `tsq-librarian`, `tsq-log`, `tsq-retro`, `tsq-prompt` |
|
|
194
|
+
|
|
195
|
+
### 8개 Hook Gate
|
|
196
|
+
|
|
197
|
+
| Hook | 스크립트 | 역할 | 전략 |
|
|
198
|
+
|------|---------|------|------|
|
|
199
|
+
| PreToolUse (Bash) | `safe-guard.sh` | 파괴적 명령 차단 | Fail-closed |
|
|
200
|
+
| PreToolUse (Write\|Edit) | `phase-guard.sh` | Phase별 파일 접근 제한 | Fail-closed |
|
|
201
|
+
| PreToolUse (Write\|Edit) | `check-capability.sh` | Capability Token 검증 | Fail-closed |
|
|
202
|
+
| PreToolUse (Write\|Edit) | `change-scope-guard.sh` | 변경 범위 추적 | Fail-open |
|
|
203
|
+
| Stop | `completion-guard.sh` | 테스트 + TDD + SSOT 확인 | Fail-closed |
|
|
204
|
+
| Stop | `build-gate.sh` | TypeScript 빌드 에러 | Fail-closed |
|
|
205
|
+
| PreCompact | `pre-compact.sh` | 컴팩션 전 상태 저장 | Fail-open |
|
|
206
|
+
| SessionStart (compact) | `context-restore.sh` | 컨텍스트 복원 + SSOT 안내 | Fail-open |
|
|
207
|
+
|
|
208
|
+
### 데몬 기반 자동화
|
|
209
|
+
|
|
210
|
+
**관찰자 전용 데몬** — 토큰 비용 0:
|
|
183
211
|
|
|
184
212
|
```
|
|
185
|
-
Claude Code 세션 → 데몬이
|
|
186
|
-
→ L1 태스크 로그
|
|
187
|
-
→
|
|
188
|
-
→
|
|
189
|
-
→
|
|
190
|
-
→
|
|
191
|
-
→ Meta Index 자동 업데이트
|
|
213
|
+
Claude Code 세션 → 데몬이 IPC로 관찰
|
|
214
|
+
→ L1 태스크 로그 기록 (SubagentStop 훅)
|
|
215
|
+
→ Decision Log 누적 (decisions.jsonl)
|
|
216
|
+
→ SSOT Drift 감지 (7일 초과 미갱신 경고)
|
|
217
|
+
→ 세션 메트릭 추적
|
|
218
|
+
→ 데몬 장애 시 파이프라인 차단 없음
|
|
192
219
|
```
|
|
193
220
|
|
|
194
|
-
> 상세: [docs/token-efficiency.md](docs/token-efficiency.md)
|
|
195
|
-
|
|
196
|
-
### Meta Index (코드 구조 인덱스)
|
|
197
|
-
|
|
198
|
-
AST 기반 코드/UI 구조 자동 인덱싱 + 에이전트 semantic 데이터 병합:
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
tsq mi rebuild # 전체 코드+UI 인덱스 구축
|
|
202
|
-
tsq mi stats # Health Score + UI Health
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
> 상세: [docs/meta-index-architecture.md](docs/meta-index-architecture.md)
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## CLI 명령어 요약
|
|
210
|
-
|
|
211
|
-
| 명령어 | 설명 |
|
|
212
|
-
|--------|------|
|
|
213
|
-
| `tsq init` | 프로젝트 초기화 (대화형/비대화형) |
|
|
214
|
-
| `tsq status` | 프로젝트 상태 확인 |
|
|
215
|
-
| `tsq q "작업"` | Quick 모드 (간단한 작업) |
|
|
216
|
-
| `tsq f "작업"` | Full 모드 (SSOT 검증) |
|
|
217
|
-
| `tsq log` | 3계층 작업 로그 관리 (L1/L2/L3) |
|
|
218
|
-
| `tsq feedback` | 피드백 분류 + 자동 액션 |
|
|
219
|
-
| `tsq retro` | 회고 실행 (수동/자동) |
|
|
220
|
-
| `tsq metrics` | 메트릭 수집/트렌드 |
|
|
221
|
-
| `tsq mi` | Meta Index 관리 (rebuild/stats) |
|
|
222
|
-
| `tsq knowledge` | Knowledge 파일 관리 |
|
|
223
|
-
| `tsq wf` | 워크플로우 자동화 |
|
|
224
|
-
| `tsq daemon` | 백그라운드 데몬 관리 |
|
|
225
|
-
|
|
226
|
-
> 전체 CLI 레퍼런스: [docs/cli.md](docs/cli.md)
|
|
227
|
-
|
|
228
221
|
---
|
|
229
222
|
|
|
230
223
|
## 프로젝트 타입
|
|
@@ -236,6 +229,7 @@ tsq mi stats # Health Score + UI Health
|
|
|
236
229
|
| `api-backend` | API 서버, 마이크로서비스 |
|
|
237
230
|
| `platform` | 프레임워크, SDK |
|
|
238
231
|
| `fintech` | 거래소, 결제 (Level 3 강제) |
|
|
232
|
+
| `mobile-app` | 크로스플랫폼 모바일 앱 |
|
|
239
233
|
| `infra` | DevOps, 자동화 |
|
|
240
234
|
|
|
241
235
|
---
|
|
@@ -246,14 +240,12 @@ tsq mi stats # Health Score + UI Health
|
|
|
246
240
|
|------|------|
|
|
247
241
|
| [PRD](docs/PRD.md) | 프레임워크 전체 기획 |
|
|
248
242
|
| [Core Concepts](docs/core-concepts.md) | 분수 모델, SSOT, 에이전트/스킬 구조 |
|
|
249
|
-
| [CLI Reference](docs/cli.md) |
|
|
250
|
-
| [
|
|
243
|
+
| [CLI Reference](docs/cli.md) | CLI 명령어 레퍼런스 |
|
|
244
|
+
| [File Structure](docs/file-structure.md) | 템플릿 + 초기화 후 구조 |
|
|
245
|
+
| [Hook Execution Order](docs/hook-execution-order.md) | Hook 실행 순서, Fail 전략 |
|
|
251
246
|
| [Log Architecture](docs/log-architecture.md) | 3계층 로그 체계 (L1→L2→L3) |
|
|
252
247
|
| [Feedback & Retrospective](docs/feedback-and-retrospective.md) | 피드백 라우팅 + 회고적 학습 |
|
|
253
|
-
| [
|
|
254
|
-
| [Knowledge Architecture](docs/knowledge-architecture.md) | Knowledge 시스템 |
|
|
255
|
-
| [Meta Index Architecture](docs/meta-index-architecture.md) | 코드/UI 구조 인덱스 |
|
|
256
|
-
| [File Structure](docs/file-structure.md) | 템플릿 + 초기화 후 구조 |
|
|
248
|
+
| [SDCA Architecture](docs/sdca-architecture.md) | 스킬 주도 컨트롤러 아키텍처 |
|
|
257
249
|
|
|
258
250
|
---
|
|
259
251
|
|
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ Optimized Role Definitions + Advanced Skills + Retrospective Learning = Continuo
|
|
|
24
24
|
| Philosophy | "Zero learning curve" | **"Structure leads to better results"** |
|
|
25
25
|
| Decision Making | LLM decides everything | **Developer stays in control** |
|
|
26
26
|
| Priority | Speed | **Quality + Consistency** |
|
|
27
|
-
|
|
|
27
|
+
| Enforcement | Prompt only (soft) | **Hook Gate + Capability Token (hard)** |
|
|
28
28
|
| Learning | None | **Retrospective learning for continuous improvement** |
|
|
29
29
|
|
|
30
30
|
**For developers who want structure, not magic.**
|
|
@@ -66,43 +66,37 @@ tsq init -n my-app -t web-service -l 2 -y # Non-interactive
|
|
|
66
66
|
|
|
67
67
|
```
|
|
68
68
|
my-app/
|
|
69
|
-
├── CLAUDE.md # PM role
|
|
69
|
+
├── CLAUDE.md # PM role (auto-injected ~15 lines)
|
|
70
70
|
├── .claude/
|
|
71
|
-
│ ├── settings.json # Claude Code settings
|
|
72
|
-
│ ├── rules/ #
|
|
73
|
-
│ ├── agents/ #
|
|
74
|
-
│ │ ├── tsq-architect.md # Architecture design
|
|
75
|
-
│ │ ├── tsq-developer.md # Code implementation
|
|
76
|
-
│ │ ├── tsq-qa.md # Verification/review
|
|
77
|
-
│ │ ├── tsq-security.md # Security audit
|
|
78
|
-
│ │ ├── tsq-dba.md # DB design
|
|
79
|
-
│ │
|
|
80
|
-
│
|
|
71
|
+
│ ├── settings.json # Claude Code settings (8 hooks)
|
|
72
|
+
│ ├── rules/ # Path-specific rules (15)
|
|
73
|
+
│ ├── agents/ # 7 specialized agents
|
|
74
|
+
│ │ ├── tsq-architect.md # Architecture design
|
|
75
|
+
│ │ ├── tsq-developer.md # Code implementation
|
|
76
|
+
│ │ ├── tsq-qa.md # Verification/review
|
|
77
|
+
│ │ ├── tsq-security.md # Security audit
|
|
78
|
+
│ │ ├── tsq-dba.md # DB design
|
|
79
|
+
│ │ ├── tsq-designer.md # UI/UX design
|
|
80
|
+
│ │ └── tsq-librarian.md # Phase recording
|
|
81
|
+
│ ├── skills/ # tsq-* skills (selected by project type)
|
|
81
82
|
│ │ ├── tsq-protocol/ # Shared agent protocol
|
|
82
|
-
│ │ ├──
|
|
83
|
-
│ │ ├──
|
|
84
|
-
│ │ ├──
|
|
85
|
-
│ │ ├──
|
|
86
|
-
│ │ ├──
|
|
87
|
-
│ │ ├──
|
|
88
|
-
│ │ ├──
|
|
89
|
-
│ │ ├──
|
|
90
|
-
│ │
|
|
91
|
-
│ │
|
|
92
|
-
│ │ │ ├── rules/ # Protocol, scoring, FP guard
|
|
93
|
-
│ │ │ ├── checklists/ # Security ~ Functional (7)
|
|
94
|
-
│ │ │ └── templates/ # Report + improvement plan
|
|
95
|
-
│ │ ├── methodology/(tdd|bdd|ddd|debugging)/
|
|
96
|
-
│ │ └── ...
|
|
83
|
+
│ │ ├── tsq-controller/ # Context DI + delegation
|
|
84
|
+
│ │ ├── tsq-coding/ # Coding rules
|
|
85
|
+
│ │ ├── tsq-testing/ # Test strategies
|
|
86
|
+
│ │ ├── tsq-typescript/ # TypeScript patterns
|
|
87
|
+
│ │ ├── tsq-react/ # React (if configured)
|
|
88
|
+
│ │ ├── tsq-nextjs/ # Next.js + Vercel rules
|
|
89
|
+
│ │ ├── tsq-database/ # DB design
|
|
90
|
+
│ │ ├── tsq-product-audit/ # Product audit (7 areas)
|
|
91
|
+
│ │ ├── tsq-tdd/ # TDD methodology
|
|
92
|
+
│ │ └── ... # Others (per config)
|
|
97
93
|
│ └── knowledge/ # Agent reference knowledge
|
|
98
|
-
│ ├── checklists/ # Security, accessibility, SSOT validation
|
|
99
|
-
│ └── templates/ # Output formats (task-result, etc.)
|
|
100
94
|
└── .timsquad/
|
|
101
95
|
├── config.yaml # Project configuration
|
|
102
96
|
├── ssot/ # SSOT documents (5–14 per level)
|
|
103
97
|
├── process/ # Workflow definitions
|
|
104
|
-
├── state/ # State management
|
|
105
|
-
├──
|
|
98
|
+
├── state/ # State management
|
|
99
|
+
├── trails/ # Phase thinking archives
|
|
106
100
|
├── logs/ # 3-tier logs (L1→L2→L3)
|
|
107
101
|
└── retrospective/ # Retrospective data
|
|
108
102
|
```
|
|
@@ -112,25 +106,52 @@ my-app/
|
|
|
112
106
|
```bash
|
|
113
107
|
claude # Launch Claude Code
|
|
114
108
|
|
|
115
|
-
#
|
|
116
|
-
|
|
109
|
+
# Use slash commands for all operations
|
|
110
|
+
/tsq-start # Start pipeline + onboarding
|
|
111
|
+
/tsq-status # Check current status
|
|
112
|
+
/tsq-grill # Deep interview for Sub-PRD
|
|
113
|
+
/tsq-decompose # Generate Phase-Sequence-Task plan
|
|
114
|
+
|
|
115
|
+
# PM (CLAUDE.md) delegates to agents via controller
|
|
117
116
|
@tsq-developer "Implement the login API"
|
|
118
117
|
@tsq-qa "Review the code"
|
|
119
118
|
```
|
|
120
119
|
|
|
121
|
-
### 4.
|
|
120
|
+
### 4. CLI Commands
|
|
122
121
|
|
|
123
122
|
```bash
|
|
124
|
-
tsq
|
|
125
|
-
tsq
|
|
126
|
-
tsq
|
|
127
|
-
tsq retro auto # Run retrospective automatically
|
|
123
|
+
tsq init # Initialize project
|
|
124
|
+
tsq update # Update skills/agents to latest
|
|
125
|
+
tsq daemon start # Start background daemon
|
|
128
126
|
```
|
|
129
127
|
|
|
128
|
+
> All other operations use Claude Code slash commands. See [CLI Reference](docs/cli.en.md).
|
|
129
|
+
|
|
130
130
|
---
|
|
131
131
|
|
|
132
132
|
## Key Features
|
|
133
133
|
|
|
134
|
+
### 5-Layer Enforcement Architecture
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
Layer 1: Hook Gate (100% enforced)
|
|
138
|
+
└ PreToolUse hooks + Capability Token — system-level blocking
|
|
139
|
+
|
|
140
|
+
Layer 2: Skill Protocol (90-95% compliance)
|
|
141
|
+
└ tsq-protocol + controller — process guidance
|
|
142
|
+
└ Agent-specific skills preloaded via skills: field
|
|
143
|
+
|
|
144
|
+
Layer 3: CLAUDE.md (role definition only)
|
|
145
|
+
└ PM role + pipeline prerequisites (~15 lines)
|
|
146
|
+
|
|
147
|
+
Layer 4: Slash Commands (explicit process)
|
|
148
|
+
└ /tsq-start, /tsq-status, /tsq-grill, /tsq-retro
|
|
149
|
+
|
|
150
|
+
Layer 5: Audit (async post-tracking)
|
|
151
|
+
└ Daemon observes → session logs, metrics
|
|
152
|
+
└ Daemon failure doesn't affect main pipeline
|
|
153
|
+
```
|
|
154
|
+
|
|
134
155
|
### SSOT Document System
|
|
135
156
|
|
|
136
157
|
Required documents are automatically determined by project level:
|
|
@@ -143,88 +164,60 @@ Required documents are automatically determined by project level:
|
|
|
143
164
|
|
|
144
165
|
### Agent System
|
|
145
166
|
|
|
146
|
-
|
|
167
|
+
7 specialized agents with Controller-based delegation:
|
|
147
168
|
|
|
148
169
|
| Agent | Role |
|
|
149
170
|
|-------|------|
|
|
150
|
-
| `@tsq-architect` | Architecture design, ADR,
|
|
171
|
+
| `@tsq-architect` | Architecture design, ADR, plan review |
|
|
151
172
|
| `@tsq-developer` | SSOT-driven code implementation, TDD |
|
|
152
173
|
| `@tsq-qa` | Code review, test verification, SSOT compliance |
|
|
153
174
|
| `@tsq-security` | Security audit, OWASP, vulnerability analysis |
|
|
154
175
|
| `@tsq-dba` | DB design, query optimization, migrations |
|
|
155
176
|
| `@tsq-designer` | UI/UX design, accessibility, design tokens |
|
|
177
|
+
| `@tsq-librarian` | Phase recording, memory management |
|
|
156
178
|
|
|
157
|
-
###
|
|
179
|
+
### 35 Skills (Slash Commands)
|
|
158
180
|
|
|
159
|
-
|
|
181
|
+
All skills use `tsq-*` flat namespace and are available as slash commands:
|
|
160
182
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
183
|
+
| Category | Skills |
|
|
184
|
+
|----------|--------|
|
|
185
|
+
| **Core** | `tsq-protocol`, `tsq-controller`, `tsq-start`, `tsq-status` |
|
|
186
|
+
| **Coding** | `tsq-coding`, `tsq-testing`, `tsq-typescript`, `tsq-hono` |
|
|
187
|
+
| **Planning** | `tsq-planning`, `tsq-spec`, `tsq-grill`, `tsq-decompose` |
|
|
188
|
+
| **Frontend** | `tsq-react`, `tsq-nextjs`, `tsq-ui` |
|
|
189
|
+
| **Backend** | `tsq-database`, `tsq-prisma`, `tsq-security` |
|
|
190
|
+
| **Mobile** | `tsq-dart`, `tsq-flutter` (+ 6 sub-skills) |
|
|
191
|
+
| **Quality** | `tsq-product-audit`, `tsq-audit`, `tsq-stability` |
|
|
192
|
+
| **Methodology** | `tsq-tdd`, `tsq-bdd`, `tsq-ddd`, `tsq-debugging` |
|
|
193
|
+
| **Operations** | `tsq-librarian`, `tsq-log`, `tsq-retro`, `tsq-prompt` |
|
|
166
194
|
|
|
167
|
-
|
|
195
|
+
### 8 Hook Gates
|
|
168
196
|
|
|
169
|
-
|
|
197
|
+
| Hook | Script | Role | Strategy |
|
|
198
|
+
|------|--------|------|----------|
|
|
199
|
+
| PreToolUse (Bash) | `safe-guard.sh` | Block destructive commands | Fail-closed |
|
|
200
|
+
| PreToolUse (Write\|Edit) | `phase-guard.sh` | Phase file restrictions | Fail-closed |
|
|
201
|
+
| PreToolUse (Write\|Edit) | `check-capability.sh` | Capability Token verification | Fail-closed |
|
|
202
|
+
| PreToolUse (Write\|Edit) | `change-scope-guard.sh` | Change scope tracking | Fail-open |
|
|
203
|
+
| Stop | `completion-guard.sh` | Test + TDD + SSOT check | Fail-closed |
|
|
204
|
+
| Stop | `build-gate.sh` | TypeScript build errors | Fail-closed |
|
|
205
|
+
| PreCompact | `pre-compact.sh` | Save state before compact | Fail-open |
|
|
206
|
+
| SessionStart (compact) | `context-restore.sh` | Restore context + SSOT readiness | Fail-open |
|
|
170
207
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
tsq retro auto # Collect → Analyze → Report → Apply (one-click)
|
|
175
|
-
tsq improve analyze # Pattern analysis + improvement suggestions
|
|
176
|
-
```
|
|
208
|
+
### Daemon-Based Automation
|
|
177
209
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
### Daemon-Based Automation Pipeline
|
|
181
|
-
|
|
182
|
-
**All orchestration at zero token cost** — the program decides:
|
|
210
|
+
**Observer-only daemon** — no token cost:
|
|
183
211
|
|
|
184
212
|
```
|
|
185
|
-
Claude Code session → Daemon
|
|
186
|
-
→ L1 task logs recorded
|
|
187
|
-
→
|
|
188
|
-
→
|
|
189
|
-
→
|
|
190
|
-
→
|
|
191
|
-
→ Meta Index updated automatically
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
> Details: [docs/token-efficiency.en.md](docs/token-efficiency.en.md)
|
|
195
|
-
|
|
196
|
-
### Meta Index (Code Structure Index)
|
|
197
|
-
|
|
198
|
-
AST-based code/UI structure auto-indexing + agent semantic data merging:
|
|
199
|
-
|
|
200
|
-
```bash
|
|
201
|
-
tsq mi rebuild # Build full code+UI index
|
|
202
|
-
tsq mi stats # Health Score + UI Health
|
|
213
|
+
Claude Code session → Daemon observes via IPC
|
|
214
|
+
→ L1 task logs recorded (SubagentStop hook)
|
|
215
|
+
→ Decision Log accumulated (decisions.jsonl)
|
|
216
|
+
→ SSOT Drift detection (7-day stale warning)
|
|
217
|
+
→ Session metrics tracked
|
|
218
|
+
→ Daemon failure doesn't block pipeline
|
|
203
219
|
```
|
|
204
220
|
|
|
205
|
-
> Details: [docs/meta-index-architecture.en.md](docs/meta-index-architecture.en.md)
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## CLI Commands
|
|
210
|
-
|
|
211
|
-
| Command | Description |
|
|
212
|
-
|---------|-------------|
|
|
213
|
-
| `tsq init` | Initialize project (interactive/non-interactive) |
|
|
214
|
-
| `tsq status` | Check project status |
|
|
215
|
-
| `tsq q "task"` | Quick mode (simple tasks) |
|
|
216
|
-
| `tsq f "task"` | Full mode (SSOT validation) |
|
|
217
|
-
| `tsq log` | 3-tier task log management (L1/L2/L3) |
|
|
218
|
-
| `tsq feedback` | Feedback classification + auto actions |
|
|
219
|
-
| `tsq retro` | Run retrospective (manual/auto) |
|
|
220
|
-
| `tsq metrics` | Metrics collection/trends |
|
|
221
|
-
| `tsq mi` | Meta Index management (rebuild/stats) |
|
|
222
|
-
| `tsq knowledge` | Knowledge file management |
|
|
223
|
-
| `tsq wf` | Workflow automation |
|
|
224
|
-
| `tsq daemon` | Background daemon management |
|
|
225
|
-
|
|
226
|
-
> Full CLI reference: [docs/cli.en.md](docs/cli.en.md)
|
|
227
|
-
|
|
228
221
|
---
|
|
229
222
|
|
|
230
223
|
## Project Types
|
|
@@ -236,6 +229,7 @@ tsq mi stats # Health Score + UI Health
|
|
|
236
229
|
| `api-backend` | API servers, microservices |
|
|
237
230
|
| `platform` | Frameworks, SDKs |
|
|
238
231
|
| `fintech` | Exchanges, payments (Level 3 enforced) |
|
|
232
|
+
| `mobile-app` | Cross-platform mobile apps |
|
|
239
233
|
| `infra` | DevOps, automation |
|
|
240
234
|
|
|
241
235
|
---
|
|
@@ -246,14 +240,12 @@ tsq mi stats # Health Score + UI Health
|
|
|
246
240
|
|----------|-------------|
|
|
247
241
|
| [PRD](docs/PRD.en.md) | Full framework specification |
|
|
248
242
|
| [Core Concepts](docs/core-concepts.en.md) | Fountain model, SSOT, agent/skill architecture |
|
|
249
|
-
| [CLI Reference](docs/cli.en.md) |
|
|
250
|
-
| [Authoring Guide](docs/authoring-guide.en.md) | Agent/skill/knowledge authoring guide |
|
|
251
|
-
| [Log Architecture](docs/log-architecture.en.md) | 3-tier log system (L1→L2→L3) |
|
|
252
|
-
| [Feedback & Retrospective](docs/feedback-and-retrospective.en.md) | Feedback routing + retrospective learning |
|
|
253
|
-
| [Token Efficiency](docs/token-efficiency.en.md) | Token efficiency design |
|
|
254
|
-
| [Knowledge Architecture](docs/knowledge-architecture.en.md) | Knowledge system |
|
|
255
|
-
| [Meta Index Architecture](docs/meta-index-architecture.en.md) | Code/UI structure index |
|
|
243
|
+
| [CLI Reference](docs/cli.en.md) | CLI command reference |
|
|
256
244
|
| [File Structure](docs/file-structure.en.md) | Templates + post-init structure |
|
|
245
|
+
| [Hook Execution Order](docs/hook-execution-order.md) | Hook sequence, fail strategy |
|
|
246
|
+
| [Log Architecture](docs/log-architecture.en.md) | 3-tier log system (L1→L2→L3) |
|
|
247
|
+
| [Feedback & Retrospective](docs/feedback-and-retrospective.en.md) | Feedback routing + retrospective |
|
|
248
|
+
| [SDCA Architecture](docs/sdca-architecture.md) | Skill-Driven Controller Architecture |
|
|
257
249
|
|
|
258
250
|
---
|
|
259
251
|
|
package/dist/commands/init.js
CHANGED
|
@@ -238,15 +238,11 @@ async function runInit(options) {
|
|
|
238
238
|
}
|
|
239
239
|
console.log('\n' + colors.header('Next steps:'));
|
|
240
240
|
console.log(colors.dim(' 1. ') + colors.command('cd ' + (targetDir === '.' ? '' : targetDir)));
|
|
241
|
-
console.log(colors.dim(' 2. ') +
|
|
242
|
-
console.log(colors.dim(' 3. ') + 'Start with PRD: ' + colors.path('.timsquad/ssot/prd.md'));
|
|
241
|
+
console.log(colors.dim(' 2. ') + 'Start with PRD: ' + colors.path('.timsquad/ssot/prd.md'));
|
|
243
242
|
console.log('\n');
|
|
244
|
-
console.log(colors.dim('
|
|
245
|
-
console.log(colors.dim('
|
|
246
|
-
console.log(colors.dim('
|
|
247
|
-
console.log(colors.dim(' tsq q "task" ') + '- Quick mode for simple tasks');
|
|
248
|
-
console.log(colors.dim(' tsq f "task" ') + '- Full mode with SSOT checks');
|
|
249
|
-
console.log(colors.dim(' tsq retro ') + '- Run retrospective');
|
|
243
|
+
console.log(colors.dim('Getting started:'));
|
|
244
|
+
console.log(colors.dim(' In Claude Code, type ') + colors.command('/tsq-start') + colors.dim(' to activate the pipeline'));
|
|
245
|
+
console.log(colors.dim(' Slash commands: /tsq-status, /tsq-update, /tsq-audit, etc.'));
|
|
250
246
|
console.log('\n');
|
|
251
247
|
}
|
|
252
248
|
function isValidProjectType(value) {
|