timsquad 3.5.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 -107
- package/README.md +100 -104
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +48 -2
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/init.js +46 -14
- 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/context-writer.d.ts +14 -0
- package/dist/daemon/context-writer.d.ts.map +1 -1
- package/dist/daemon/context-writer.js +29 -0
- package/dist/daemon/context-writer.js.map +1 -1
- package/dist/daemon/event-queue.d.ts +7 -11
- package/dist/daemon/event-queue.d.ts.map +1 -1
- package/dist/daemon/event-queue.js +78 -118
- package/dist/daemon/event-queue.js.map +1 -1
- package/dist/daemon/file-watcher.d.ts +14 -8
- package/dist/daemon/file-watcher.d.ts.map +1 -1
- package/dist/daemon/file-watcher.js +78 -41
- package/dist/daemon/file-watcher.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 +54 -47
- package/dist/daemon/index.js.map +1 -1
- package/dist/index.js +3 -41
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-generator.d.ts.map +1 -1
- package/dist/lib/agent-generator.js +21 -10
- package/dist/lib/agent-generator.js.map +1 -1
- package/dist/lib/compile-rules.d.ts +2 -0
- package/dist/lib/compile-rules.d.ts.map +1 -1
- package/dist/lib/compile-rules.js +39 -4
- package/dist/lib/compile-rules.js.map +1 -1
- package/dist/lib/compiler.d.ts +22 -1
- package/dist/lib/compiler.d.ts.map +1 -1
- package/dist/lib/compiler.js +178 -12
- package/dist/lib/compiler.js.map +1 -1
- package/dist/lib/config.d.ts +3 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +17 -2
- package/dist/lib/config.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 +1 -1
- package/dist/lib/skill-generator.d.ts.map +1 -1
- package/dist/lib/skill-generator.js +19 -44
- package/dist/lib/skill-generator.js.map +1 -1
- package/dist/lib/ssot-map.d.ts +31 -0
- package/dist/lib/ssot-map.d.ts.map +1 -0
- package/dist/lib/ssot-map.js +79 -0
- package/dist/lib/ssot-map.js.map +1 -0
- package/dist/lib/template.d.ts +10 -3
- package/dist/lib/template.d.ts.map +1 -1
- package/dist/lib/template.js +137 -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/lib/workflow-state.d.ts +1 -1
- package/dist/lib/workflow-state.d.ts.map +1 -1
- package/dist/lib/workflow-state.js +1 -1
- package/dist/lib/workflow-state.js.map +1 -1
- package/dist/types/config.d.ts +10 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js +46 -41
- 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/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/meta-index.d.ts +8 -0
- package/dist/types/meta-index.d.ts.map +1 -1
- package/dist/types/project.d.ts +6 -1
- 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 +30 -0
- package/dist/types/ssot-map.d.ts.map +1 -0
- package/dist/types/ssot-map.js +6 -0
- package/dist/types/ssot-map.js.map +1 -0
- 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 +45 -0
- 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/_shared/naming-conventions.md +49 -0
- package/templates/base/skills/_template/SKILL.md +31 -17
- 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/tsq-coding/SKILL.md +65 -0
- package/templates/base/skills/tsq-coding/rules/async-patterns.md +81 -0
- package/templates/base/skills/tsq-coding/rules/code-organization.md +80 -0
- package/templates/base/skills/tsq-coding/rules/error-handling.md +76 -0
- package/templates/base/skills/tsq-coding/rules/type-safety.md +85 -0
- package/templates/base/skills/tsq-controller/SKILL.md +81 -0
- package/templates/base/skills/tsq-controller/memory/.gitkeep +0 -0
- package/templates/base/skills/{mobile/dart → tsq-dart}/SKILL.md +5 -3
- package/templates/base/skills/{database → tsq-database}/SKILL.md +13 -27
- package/templates/base/skills/tsq-database/rules/query-optimization.md +32 -0
- package/templates/base/skills/tsq-database/rules/supabase-patterns.md +94 -0
- 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/tsq-product-audit/SKILL.md +113 -0
- package/templates/base/skills/tsq-product-audit/checklists/01-security.md +86 -0
- package/templates/base/skills/tsq-product-audit/checklists/02-performance.md +67 -0
- package/templates/base/skills/tsq-product-audit/checklists/03-seo.md +46 -0
- package/templates/base/skills/tsq-product-audit/checklists/04-accessibility.md +66 -0
- package/templates/base/skills/tsq-product-audit/checklists/05-ui-ux.md +50 -0
- package/templates/base/skills/tsq-product-audit/checklists/06-architecture.md +53 -0
- package/templates/base/skills/tsq-product-audit/checklists/07-functional-requirements.md +55 -0
- package/templates/base/skills/tsq-product-audit/rules/audit-protocol.md +136 -0
- package/templates/base/skills/tsq-product-audit/rules/false-positive-guard.md +81 -0
- package/templates/base/skills/tsq-product-audit/rules/scoring-criteria.md +113 -0
- package/templates/base/skills/tsq-product-audit/templates/improvement-plan-template.md +60 -0
- package/templates/base/skills/tsq-product-audit/templates/report-template.md +88 -0
- package/templates/base/skills/tsq-prompt/SKILL.md +86 -0
- package/templates/base/skills/tsq-protocol/SKILL.md +101 -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/tsq-retro/references/improvement-template.md +26 -0
- package/templates/base/skills/tsq-security/SKILL.md +66 -0
- package/templates/base/skills/tsq-security/rules/auth-patterns.md +62 -0
- package/templates/base/skills/tsq-security/rules/dependency-security.md +69 -0
- package/templates/base/skills/tsq-security/rules/input-validation.md +68 -0
- package/templates/base/skills/tsq-security/rules/secrets-management.md +65 -0
- package/templates/base/skills/tsq-spec/SKILL.md +58 -0
- 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 +12 -3
- package/templates/base/skills/tsq-testing/SKILL.md +69 -0
- package/templates/base/skills/tsq-testing/references/e2e-stability.md +33 -0
- package/templates/base/skills/{typescript → tsq-typescript}/SKILL.md +5 -11
- 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/test-spec.template.md +11 -1
- package/templates/base/timsquad/ssot/ui-ux-spec.template.md +43 -3
- package/templates/base/timsquad/ssot-map.template.yaml +69 -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/api-conventions.md +12 -0
- 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/librarian-constraints.md +11 -0
- 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/test-conventions.md +13 -0
- 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 +110 -0
- package/templates/platforms/claude-code/scripts/check-capability.sh +68 -0
- package/templates/platforms/claude-code/scripts/completion-guard.sh +134 -14
- package/templates/platforms/claude-code/scripts/context-restore.sh +95 -0
- package/templates/platforms/claude-code/scripts/e2e-commit-gate.sh +70 -0
- package/templates/platforms/claude-code/scripts/e2e-marker.sh +51 -0
- package/templates/platforms/claude-code/scripts/phase-guard.sh +3 -6
- package/templates/platforms/claude-code/scripts/pre-compact.sh +70 -0
- 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 +28 -56
- 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/compile.d.ts +0 -3
- package/dist/commands/compile.d.ts.map +0 -1
- package/dist/commands/compile.js +0 -170
- 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 -1436
- 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 -401
- 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 -828
- 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 -3
- package/dist/commands/workflow.d.ts.map +0 -1
- package/dist/commands/workflow.js +0 -607
- package/dist/commands/workflow.js.map +0 -1
- package/templates/base/skills/coding/SKILL.md +0 -47
- package/templates/base/skills/controller/SKILL.md +0 -111
- package/templates/base/skills/prompt-engineering/SKILL.md +0 -103
- package/templates/base/skills/retrospective/SKILL.md +0 -102
- package/templates/base/skills/security/SKILL.md +0 -55
- package/templates/base/skills/testing/SKILL.md +0 -63
- 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-rules.json +0 -85
- package/templates/platforms/claude-code/scripts/skill-suggest.sh +0 -105
- /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/patterns.md +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/{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/{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/{security → tsq-security}/rules/owasp-examples.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/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
|
@@ -1,16 +1,22 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: database
|
|
2
|
+
name: tsq-database
|
|
3
3
|
description: |
|
|
4
4
|
데이터베이스 설계 및 운영 방법론.
|
|
5
5
|
정규화/비정규화 결정, 쿼리 최적화 프로세스, 마이그레이션 안전 규칙.
|
|
6
6
|
Use when: DB 설계, 스키마 변경, 쿼리 최적화, 마이그레이션
|
|
7
7
|
version: "1.0.0"
|
|
8
|
-
tags: [database, sql, migration]
|
|
8
|
+
tags: [tsq, database, sql, migration]
|
|
9
9
|
user-invocable: false
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# Database Methodology
|
|
13
13
|
|
|
14
|
+
## Resources
|
|
15
|
+
|
|
16
|
+
| Priority | Type | Resource | Description |
|
|
17
|
+
|----------|------|----------|-------------|
|
|
18
|
+
| HIGH | rule | [supabase-patterns](rules/supabase-patterns.md) | JSONB, RLS, Edge Runtime, USE_MOCK, 커넥션 풀링 |
|
|
19
|
+
|
|
14
20
|
## 정규화 기준
|
|
15
21
|
|
|
16
22
|
| 정규형 | 적용 기준 | 예외 허용 조건 |
|
|
@@ -39,32 +45,9 @@ user-invocable: false
|
|
|
39
45
|
- 대응: [트리거/애플리케이션 로직]
|
|
40
46
|
```
|
|
41
47
|
|
|
42
|
-
## 쿼리 최적화
|
|
43
|
-
|
|
44
|
-
### 1. 분석
|
|
45
|
-
|
|
46
|
-
```sql
|
|
47
|
-
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) SELECT ...;
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
### 2. 체크리스트
|
|
51
|
-
|
|
52
|
-
| 항목 | 확인 내용 |
|
|
53
|
-
|-----|----------|
|
|
54
|
-
| Seq Scan | 대용량 테이블에 순차 스캔? |
|
|
55
|
-
| Index 사용 | 적절한 인덱스 사용 중? |
|
|
56
|
-
| Join 순서 | 작은 테이블 먼저 조인? |
|
|
57
|
-
| N+1 | 루프 내 쿼리 실행? |
|
|
58
|
-
| 불필요 컬럼 | SELECT * 사용? |
|
|
48
|
+
## 쿼리 최적화
|
|
59
49
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
| 문제 | 해결책 |
|
|
63
|
-
|-----|-------|
|
|
64
|
-
| 느린 조인 | 인덱스 추가, 조인 순서 변경 |
|
|
65
|
-
| N+1 | Eager Loading, JOIN |
|
|
66
|
-
| 대용량 스캔 | 파티셔닝, 커버링 인덱스 |
|
|
67
|
-
| 동시성 | 적절한 격리 수준 |
|
|
50
|
+
상세 프로세스(EXPLAIN 분석, 체크리스트, 기법)는 `rules/query-optimization.md` 참조.
|
|
68
51
|
|
|
69
52
|
## 마이그레이션 규칙
|
|
70
53
|
|
|
@@ -96,3 +79,6 @@ ALTER TABLE users ADD COLUMN phone VARCHAR(20);
|
|
|
96
79
|
-- Down
|
|
97
80
|
ALTER TABLE users DROP COLUMN phone;
|
|
98
81
|
```
|
|
82
|
+
|
|
83
|
+
## 관련 스킬
|
|
84
|
+
- **tsq-prisma** — Prisma ORM 사용 시 스키마·쿼리·마이그레이션은 tsq-prisma 참조
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Query Optimization Process
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
tags: database, query, optimization, explain
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Query Optimization Process
|
|
8
|
+
|
|
9
|
+
## 1. 분석
|
|
10
|
+
|
|
11
|
+
```sql
|
|
12
|
+
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) SELECT ...;
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 2. 체크리스트
|
|
16
|
+
|
|
17
|
+
| 항목 | 확인 내용 |
|
|
18
|
+
|-----|----------|
|
|
19
|
+
| Seq Scan | 대용량 테이블에 순차 스캔? |
|
|
20
|
+
| Index 사용 | 적절한 인덱스 사용 중? |
|
|
21
|
+
| Join 순서 | 작은 테이블 먼저 조인? |
|
|
22
|
+
| N+1 | 루프 내 쿼리 실행? |
|
|
23
|
+
| 불필요 컬럼 | SELECT * 사용? |
|
|
24
|
+
|
|
25
|
+
## 3. 최적화 기법
|
|
26
|
+
|
|
27
|
+
| 문제 | 해결책 |
|
|
28
|
+
|-----|-------|
|
|
29
|
+
| 느린 조인 | 인덱스 추가, 조인 순서 변경 |
|
|
30
|
+
| N+1 | Eager Loading, JOIN |
|
|
31
|
+
| 대용량 스캔 | 파티셔닝, 커버링 인덱스 |
|
|
32
|
+
| 동시성 | 적절한 격리 수준 |
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Supabase Patterns
|
|
3
|
+
impact: HIGH
|
|
4
|
+
tags: supabase, database, edge-runtime, rls
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Supabase Patterns
|
|
8
|
+
|
|
9
|
+
## JSONB 쿼리
|
|
10
|
+
|
|
11
|
+
```sql
|
|
12
|
+
-- .contains() 사용 시 주의: GIN 인덱스 필수
|
|
13
|
+
CREATE INDEX idx_data_gin ON records USING GIN (data);
|
|
14
|
+
|
|
15
|
+
-- 올바른 사용
|
|
16
|
+
SELECT * FROM records WHERE data @> '{"status": "active"}'::jsonb;
|
|
17
|
+
|
|
18
|
+
-- 피해야 할 패턴: 중첩 키 직접 접근 (인덱스 미사용)
|
|
19
|
+
-- SELECT * FROM records WHERE data->'nested'->'key' = '"value"';
|
|
20
|
+
-- 대안: jsonb_path_query 또는 표현식 인덱스
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## RLS (Row Level Security)
|
|
24
|
+
|
|
25
|
+
```sql
|
|
26
|
+
-- 항상 RLS 활성화
|
|
27
|
+
ALTER TABLE user_data ENABLE ROW LEVEL SECURITY;
|
|
28
|
+
|
|
29
|
+
-- 서비스 키와 anon 키 구분
|
|
30
|
+
-- anon: 클라이언트 사이드, RLS 적용
|
|
31
|
+
-- service_role: 서버 사이드, RLS 바이패스
|
|
32
|
+
|
|
33
|
+
-- 정책 패턴
|
|
34
|
+
CREATE POLICY "Users can view own data"
|
|
35
|
+
ON user_data FOR SELECT
|
|
36
|
+
USING (auth.uid() = user_id);
|
|
37
|
+
|
|
38
|
+
CREATE POLICY "Users can insert own data"
|
|
39
|
+
ON user_data FOR INSERT
|
|
40
|
+
WITH CHECK (auth.uid() = user_id);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Edge Runtime 초기화
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
// Edge Runtime에서 Supabase 클라이언트 초기화
|
|
47
|
+
// 반드시 함수 내부에서 생성 (모듈 레벨 싱글톤 금지)
|
|
48
|
+
import { createClient } from '@supabase/supabase-js';
|
|
49
|
+
|
|
50
|
+
export function getSupabase() {
|
|
51
|
+
return createClient(
|
|
52
|
+
process.env.SUPABASE_URL!,
|
|
53
|
+
process.env.SUPABASE_ANON_KEY!
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## USE_MOCK 패턴
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// 테스트/개발 환경에서 Supabase Mock
|
|
62
|
+
const USE_MOCK = process.env.USE_MOCK_DB === 'true';
|
|
63
|
+
|
|
64
|
+
function getClient() {
|
|
65
|
+
if (USE_MOCK) {
|
|
66
|
+
return createMockClient(); // 인메모리 구현
|
|
67
|
+
}
|
|
68
|
+
return createClient(SUPABASE_URL, SUPABASE_KEY);
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Edge Runtime 커넥션 풀링
|
|
73
|
+
|
|
74
|
+
- Supabase는 PgBouncer 내장 (포트 6543)
|
|
75
|
+
- Edge Functions에서는 항상 풀링 URL 사용
|
|
76
|
+
- `connection_limit=1` 설정 권장 (Edge 인스턴스별)
|
|
77
|
+
- 장기 트랜잭션 피하기 (풀 고갈 방지)
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
# 직접 연결 (마이그레이션용)
|
|
81
|
+
DATABASE_URL=postgres://...@db.xxx.supabase.co:5432/postgres
|
|
82
|
+
|
|
83
|
+
# 풀링 연결 (애플리케이션용)
|
|
84
|
+
DATABASE_URL=postgres://...@db.xxx.supabase.co:6543/postgres?pgbouncer=true
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## 소유권 경계
|
|
88
|
+
|
|
89
|
+
| 영역 | 담당 | 설명 |
|
|
90
|
+
|------|------|------|
|
|
91
|
+
| 스키마 설계 | Database 스킬 | 테이블, 인덱스, RLS |
|
|
92
|
+
| Prisma 스키마 | Prisma 스킬 | schema.prisma, 마이그레이션 |
|
|
93
|
+
| 쿼리 로직 | Coding 스킬 | 비즈니스 로직 내 DB 호출 |
|
|
94
|
+
| 성능 튜닝 | Database 스킬 | EXPLAIN, 인덱스 최적화 |
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: ddd
|
|
3
|
-
description:
|
|
2
|
+
name: tsq-ddd
|
|
3
|
+
description: |
|
|
4
|
+
Domain-Driven Design 전략적 설계 가이드라인. Bounded Context, Ubiquitous Language, Context Map.
|
|
5
|
+
Use when: 도메인 모델링, Bounded Context 설계, 유비쿼터스 언어 정의, 컨텍스트 맵 작성 시.
|
|
4
6
|
version: "1.0.0"
|
|
5
|
-
tags: [ddd, methodology, architecture]
|
|
7
|
+
tags: [tsq, ddd, methodology, architecture]
|
|
6
8
|
user-invocable: false
|
|
7
|
-
compatible-with: [tdd, bdd]
|
|
9
|
+
compatible-with: [tsq-tdd, tsq-bdd]
|
|
8
10
|
---
|
|
9
11
|
|
|
10
12
|
# DDD (Domain-Driven Design) — Strategic
|
|
@@ -63,12 +65,15 @@ Bounded Context 간 관계: Partnership, Shared Kernel, Customer-Supplier, Confo
|
|
|
63
65
|
- 기술 용어를 도메인 모델에 사용
|
|
64
66
|
|
|
65
67
|
## Checklist
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
68
|
+
|
|
69
|
+
| Priority | Item |
|
|
70
|
+
|----------|------|
|
|
71
|
+
| CRITICAL | 용어 사전 존재 및 최신화 |
|
|
72
|
+
| CRITICAL | Bounded Context 경계 정의됨 |
|
|
73
|
+
| HIGH | 코드가 유비쿼터스 언어 사용 |
|
|
74
|
+
| HIGH | Context Map 문서화 |
|
|
75
|
+
| MEDIUM | 외부 연동에 ACL 적용 |
|
|
76
|
+
| MEDIUM | Subdomain 분류 (Core/Supporting/Generic) |
|
|
72
77
|
|
|
73
78
|
## 참조
|
|
74
79
|
- `rules/strategic-patterns.md` — Context Map, ACL 예시, Event Storming, 디렉토리 구조
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: debugging
|
|
2
|
+
name: tsq-debugging
|
|
3
3
|
description: |
|
|
4
4
|
체계적 디버깅 방법론.
|
|
5
5
|
근본 원인 추적, defense-in-depth, 가설-실험 루프, 로그 기반 진단.
|
|
6
6
|
Use when: "버그 수정, 디버깅, 에러 추적, 원인 분석, 트러블슈팅"
|
|
7
7
|
version: "1.0.0"
|
|
8
|
-
tags: [debugging, troubleshooting, methodology]
|
|
8
|
+
tags: [tsq, debugging, troubleshooting, methodology]
|
|
9
9
|
user-invocable: false
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tsq-decompose
|
|
3
|
+
description: |
|
|
4
|
+
Sub-PRD에서 Phase-Sequence-Task 계획을 자동 생성하는 스킬.
|
|
5
|
+
기능 요구사항을 의존성 분석하여 DAG 기반 실행 계획으로 분해.
|
|
6
|
+
Use when: "태스크 분해", "계획 생성", "decompose", "분해", "플래닝",
|
|
7
|
+
"실행 계획", "Phase 계획", 또는 Sub-PRD가 작성된 후 실행 계획이 필요할 때.
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
tags: [tsq, planning, decompose, task, dag]
|
|
10
|
+
user-invocable: true
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /tsq-decompose — 자동 태스크 분해
|
|
14
|
+
|
|
15
|
+
Sub-PRD의 요구사항을 분석하여 Phase-Sequence-Task 구조의 실행 계획을 자동 생성한다.
|
|
16
|
+
|
|
17
|
+
## Concepts
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Phase = Topological Layer (순차 실행, 이전 Phase 완료 필요)
|
|
21
|
+
Sequence = Parallel Batch (동일 Phase 내 병렬 실행 가능 단위)
|
|
22
|
+
Task = Atomic Work Unit (단일 에이전트가 수행하는 최소 작업)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
- Phase ID: `P{N}` (P1, P2, ...)
|
|
26
|
+
- Sequence ID: `P{N}-S{NNN}` (P1-S001, P1-S002, ...)
|
|
27
|
+
- Task ID: `P{N}-S{NNN}-T{NNN}` (P1-S001-T001, ...)
|
|
28
|
+
|
|
29
|
+
## Process
|
|
30
|
+
|
|
31
|
+
### Step 1: Sub-PRD 스캔
|
|
32
|
+
|
|
33
|
+
1. `.timsquad/ssot/prd/` 하위 Sub-PRD 파일 전체 읽기
|
|
34
|
+
2. 각 Sub-PRD에서 Must-Have(P0) 요구사항 추출
|
|
35
|
+
3. Should-Have(P1)는 별도 Phase 후순위 배치
|
|
36
|
+
|
|
37
|
+
### Step 2: 의존성 분석
|
|
38
|
+
|
|
39
|
+
요구사항 간 의존성 그래프 구성:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
데이터 모델 → API 구현 → UI 구현
|
|
43
|
+
인증 → 권한 기반 기능
|
|
44
|
+
공통 컴포넌트 → 화면별 구현
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
의존성 판단 기준:
|
|
48
|
+
- **데이터 의존**: 테이블/스키마가 필요한 기능은 DB 설계 후
|
|
49
|
+
- **API 의존**: API가 필요한 UI는 API 구현 후
|
|
50
|
+
- **기능 의존**: Sub-PRD 간 명시적 참조
|
|
51
|
+
|
|
52
|
+
### Step 3: DAG 정렬 → Phase 배치
|
|
53
|
+
|
|
54
|
+
1. Topological sort로 의존성 레이어 계산
|
|
55
|
+
2. 같은 레이어 = 같은 Phase
|
|
56
|
+
3. Phase 내에서 독립적인 작업 그룹 = Sequence
|
|
57
|
+
4. Sequence 내 개별 작업 = Task
|
|
58
|
+
|
|
59
|
+
Phase 배치 관례:
|
|
60
|
+
| Phase | 일반적 내용 |
|
|
61
|
+
|:---:|------|
|
|
62
|
+
| P1 | 인프라/DB 스키마/공통 설정 |
|
|
63
|
+
| P2 | 핵심 API + 비즈니스 로직 |
|
|
64
|
+
| P3 | UI/UX 구현 |
|
|
65
|
+
| P4 | 통합 + E2E 테스트 |
|
|
66
|
+
| P5+ | 보안 감사, 성능 최적화, 배포 |
|
|
67
|
+
|
|
68
|
+
### Step 4: Task 상세화
|
|
69
|
+
|
|
70
|
+
각 Task에 포함할 정보: Task ID, 설명, 담당 에이전트, 입력(SSOT refs, 선행 산출물), 출력(코드, 테스트, 문서), 완료 기준.
|
|
71
|
+
|
|
72
|
+
### Step 5: Traceability 매핑 (Layer A)
|
|
73
|
+
|
|
74
|
+
각 Sub-PRD의 Mapped Artifacts 테이블에 생성된 Task ID를 역링크:
|
|
75
|
+
|
|
76
|
+
```markdown
|
|
77
|
+
| Type | ID | Link |
|
|
78
|
+
|------|----|------|
|
|
79
|
+
| Tasks | P1-S001-T001~T003 | [planning.md](../planning.md#P1-S001) |
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 6: planning.md 생성
|
|
83
|
+
|
|
84
|
+
`.timsquad/ssot/planning.md`에 Phase-Sequence-Task 전체 계획 작성.
|
|
85
|
+
각 Sequence에 PRD 역방향 링크 포함 (Layer B):
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
### Sequence S001: Authentication (PRD: [prd/auth](./prd/auth.md))
|
|
89
|
+
| Task ID | Description | Agent | PRD Ref | FR Ref |
|
|
90
|
+
|---------|-------------|-------|---------|--------|
|
|
91
|
+
| P1-S001-T001 | DB schema | dba | prd/auth | FR-AUTH-001 |
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Step 6.5: Plan Review (자동)
|
|
95
|
+
|
|
96
|
+
planning.md 생성 후 Controller에 Plan Reviewer 위임 요청. Reviewer(fork 컨텍스트)가 Sub-PRD 커버리지 100%, DAG 무결성, Task 크기(1에이전트 1세션), Phase 배치 순서를 검증. 결과를 Step 7에서 함께 제시.
|
|
97
|
+
|
|
98
|
+
### Step 7: Human Checkpoint
|
|
99
|
+
|
|
100
|
+
생성된 계획을 사용자에게 제시하고 컨펌을 받는다:
|
|
101
|
+
- Phase별 요약 (목표, 예상 Task 수, 핵심 산출물)
|
|
102
|
+
- 의존성 그래프 (mermaid)
|
|
103
|
+
- 수정/추가/삭제 요청 반영 후 확정
|
|
104
|
+
|
|
105
|
+
## Output
|
|
106
|
+
|
|
107
|
+
- `.timsquad/ssot/planning.md` — 확정된 실행 계획
|
|
108
|
+
- Sub-PRD Mapped Artifacts 업데이트 (Layer A 링크)
|
|
109
|
+
- 의존성 그래프 (mermaid diagram in planning.md)
|
|
110
|
+
|
|
111
|
+
## Rules
|
|
112
|
+
|
|
113
|
+
- Sub-PRD가 없으면 실행 불가 → `/tsq-grill` 먼저 안내
|
|
114
|
+
- 사용자 컨펌 없이 실행 계획 확정 금지
|
|
115
|
+
- Task 1개 = 에이전트 1명이 1회 세션에 완료 가능한 크기
|
|
116
|
+
- 순환 의존성 발견 시 사용자에게 알리고 해결책 제시
|
|
117
|
+
- planning.md 이외 SSOT 문서는 Mapped Artifacts 테이블만 수정
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tsq-delete
|
|
3
|
+
description: |
|
|
4
|
+
TimSquad 프레임워크를 프로젝트에서 완전 제거. 모든 에이전트, 스킬, 훅, 룰 정리.
|
|
5
|
+
Use when: /tsq-delete, "timsquad 제거", "tsq 삭제", "프레임워크 제거"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
tags: [tsq, delete, remove, cleanup]
|
|
8
|
+
user-invocable: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /tsq-delete — Remove TimSquad
|
|
12
|
+
|
|
13
|
+
## Protocol
|
|
14
|
+
|
|
15
|
+
1. **사용자 확인**: 반드시 삭제 전 확인 요청
|
|
16
|
+
```
|
|
17
|
+
TimSquad 프레임워크를 이 프로젝트에서 완전히 제거합니다.
|
|
18
|
+
제거 대상:
|
|
19
|
+
- .timsquad/ (설정, 로그, SSOT, 상태 전부)
|
|
20
|
+
- .claude/skills/tsq-* (TimSquad 스킬)
|
|
21
|
+
- .claude/agents/tsq-* (TimSquad 에이전트)
|
|
22
|
+
- .claude/rules/ (TimSquad 룰)
|
|
23
|
+
- .claude/scripts/ (TimSquad 훅 스크립트)
|
|
24
|
+
- .claude/settings.json 내 TimSquad 훅
|
|
25
|
+
- CLAUDE.md 내 TimSquad 블록
|
|
26
|
+
|
|
27
|
+
보존됨:
|
|
28
|
+
- CLAUDE.md (tsq 블록만 제거, 나머지 유지)
|
|
29
|
+
- .claude/settings.json (tsq 훅만 제거, 나머지 유지)
|
|
30
|
+
- 소스코드 (절대 변경 안 됨)
|
|
31
|
+
|
|
32
|
+
계속하시겠습니까?
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
2. **제거 실행** (사용자 승인 후):
|
|
36
|
+
|
|
37
|
+
a. **데몬 중지**:
|
|
38
|
+
```bash
|
|
39
|
+
tsq daemon stop 2>/dev/null || true
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
b. **스킬 제거**: `.claude/skills/tsq-*` 디렉토리 전부 삭제
|
|
43
|
+
|
|
44
|
+
c. **에이전트 제거**: `.claude/agents/tsq-*` 파일 전부 삭제
|
|
45
|
+
|
|
46
|
+
d. **룰 제거**: `.claude/rules/` 디렉토리 삭제
|
|
47
|
+
|
|
48
|
+
e. **스크립트 제거**: `.claude/scripts/` 디렉토리 삭제
|
|
49
|
+
|
|
50
|
+
f. **CLAUDE.md 정리**: `<!-- tsq:start -->` ~ `<!-- tsq:end -->` 블록 제거
|
|
51
|
+
- 블록 제거 후 빈 줄 정리
|
|
52
|
+
- 나머지 사용자 콘텐츠 보존
|
|
53
|
+
|
|
54
|
+
g. **settings.json 정리**: hooks 내 tsq 관련 항목 제거
|
|
55
|
+
- `.claude/scripts/` 경로 참조하는 훅 제거
|
|
56
|
+
- 나머지 사용자 훅 보존
|
|
57
|
+
|
|
58
|
+
h. **.timsquad 제거**: 전체 디렉토리 삭제 (마지막 단계)
|
|
59
|
+
|
|
60
|
+
3. **완료 보고**:
|
|
61
|
+
```
|
|
62
|
+
TimSquad가 프로젝트에서 제거되었습니다.
|
|
63
|
+
- 소스코드는 변경되지 않았습니다.
|
|
64
|
+
- 재설치: npx timsquad init
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Safety
|
|
68
|
+
|
|
69
|
+
- 소스코드 (`src/`, `app/`, `lib/` 등)는 절대 변경하지 않음
|
|
70
|
+
- CLAUDE.md에서 tsq 블록만 제거, 나머지 보존
|
|
71
|
+
- settings.json에서 tsq 훅만 제거, 나머지 보존
|
|
72
|
+
- 반드시 사용자 확인 후 실행
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: flutter
|
|
3
|
-
description:
|
|
2
|
+
name: tsq-flutter
|
|
3
|
+
description: |
|
|
4
|
+
Flutter 개발 가이드라인. Feature-first 아키텍처, Riverpod 상태관리, 위젯 합성, 성능 최적화, 크로스플랫폼 적응형 UI.
|
|
5
|
+
Use when: Flutter 위젯 작성·수정, 상태관리 설계, 크로스플랫폼 UI 구현, pubspec.yaml 설정 시.
|
|
4
6
|
version: "1.0.0"
|
|
5
|
-
tags: [flutter, mobile, cross-platform, riverpod]
|
|
7
|
+
tags: [tsq, flutter, mobile, cross-platform, riverpod]
|
|
6
8
|
user-invocable: false
|
|
7
9
|
---
|
|
8
10
|
|
|
@@ -10,6 +12,7 @@ user-invocable: false
|
|
|
10
12
|
|
|
11
13
|
Flutter 3.x 기반 크로스플랫폼 앱 개발 가이드라인.
|
|
12
14
|
Flutter 공식 아키텍처 가이드 + VGV + Riverpod 커뮤니티 베스트 프랙티스 종합.
|
|
15
|
+
기본 스택: Riverpod, go_router, freezed. 프로젝트 설정(`memory/conventions.md`)으로 재정의 가능.
|
|
13
16
|
|
|
14
17
|
## Philosophy
|
|
15
18
|
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tsq-grill
|
|
3
|
+
description: |
|
|
4
|
+
Sub-PRD 작성/보강을 위한 소크라틱 심층 인터뷰 스킬.
|
|
5
|
+
기능별 Why/What/How를 체계적으로 파고들어 모호한 요구사항을 구체화.
|
|
6
|
+
Use when: "기능 상세화", "요구사항 인터뷰", "PRD 보강", "grill", "기능 정의",
|
|
7
|
+
"Sub-PRD 작성", "기능 스펙 잡기", 또는 PRD 기능 인덱스에 빈 항목이 있을 때.
|
|
8
|
+
version: "1.0.0"
|
|
9
|
+
tags: [tsq, prd, interview, grill, requirements]
|
|
10
|
+
user-invocable: true
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# /tsq-grill — 소크라틱 심층 인터뷰
|
|
14
|
+
|
|
15
|
+
PRD의 기능을 하나씩 깊이 파고들어 Sub-PRD를 작성하거나 보강하는 스킬.
|
|
16
|
+
"질문을 통해 답을 끌어낸다"는 소크라틱 방법론을 따른다.
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
- 새 기능의 Sub-PRD를 처음 작성할 때
|
|
21
|
+
- 기존 Sub-PRD의 빈 섹션을 채울 때
|
|
22
|
+
- 모호한 요구사항을 구체화해야 할 때
|
|
23
|
+
- PRD 기능 인덱스에 Link가 비어있을 때
|
|
24
|
+
|
|
25
|
+
## Process
|
|
26
|
+
|
|
27
|
+
### Phase 1: 대상 선정
|
|
28
|
+
|
|
29
|
+
1. `.timsquad/ssot/prd.md`의 기능 인덱스 테이블 읽기
|
|
30
|
+
2. Sub-PRD가 없거나 빈 기능 식별
|
|
31
|
+
3. 사용자에게 인터뷰 대상 기능 확인 (복수 선택 가능)
|
|
32
|
+
|
|
33
|
+
### Phase 2: 디자인 트리 인터뷰
|
|
34
|
+
|
|
35
|
+
기능마다 3단계 깊이로 질문한다. 한 번에 2-3개 질문, 답변 받으면 다음 깊이로.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Why (목적)
|
|
39
|
+
├── 이 기능이 없으면 사용자에게 어떤 문제가 생기나?
|
|
40
|
+
├── 핵심 사용자 시나리오는?
|
|
41
|
+
└── 성공을 어떻게 측정하나?
|
|
42
|
+
|
|
43
|
+
What (범위)
|
|
44
|
+
├── Must-Have vs Nice-to-Have 경계는?
|
|
45
|
+
├── 이 기능이 다루지 않는 것은?
|
|
46
|
+
├── 어떤 데이터가 필요하고 어디서 오나?
|
|
47
|
+
└── 기존 시스템과 연동 포인트는?
|
|
48
|
+
|
|
49
|
+
How (설계)
|
|
50
|
+
├── 사용자 흐름 (Happy Path → Exception Path)?
|
|
51
|
+
├── 상태 전환이 있다면?
|
|
52
|
+
├── 에러 케이스와 처리 방식은?
|
|
53
|
+
└── 성능/보안 고려사항은?
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
질문 방식 원칙:
|
|
57
|
+
- 한 번에 질문 2-3개만 (과부하 방지)
|
|
58
|
+
- 사용자 답변을 요약해서 확인받기 ("~라는 뜻이 맞나요?")
|
|
59
|
+
- 모호한 답변에는 구체적 예시로 재질문
|
|
60
|
+
- "모르겠다"는 답변도 유효 — 결정 보류로 기록
|
|
61
|
+
|
|
62
|
+
### Phase 3: Sub-PRD 생성
|
|
63
|
+
|
|
64
|
+
인터뷰 결과를 `.timsquad/ssot/prd/[feature].md`로 구조화:
|
|
65
|
+
|
|
66
|
+
1. `ssot/prd/_template.md` 복사
|
|
67
|
+
2. 인터뷰 답변으로 각 섹션 채우기
|
|
68
|
+
3. Mapped Artifacts는 빈 링크로 두되 구조 유지
|
|
69
|
+
4. 설계 결정 테이블에 인터뷰 중 나온 선택지/결정 기록
|
|
70
|
+
|
|
71
|
+
### Phase 4: PRD 인덱스 업데이트
|
|
72
|
+
|
|
73
|
+
`prd.md`의 기능 인덱스 테이블에 새 Sub-PRD 링크 추가.
|
|
74
|
+
|
|
75
|
+
## Output
|
|
76
|
+
|
|
77
|
+
- `.timsquad/ssot/prd/[feature].md` — Sub-PRD 파일
|
|
78
|
+
- `prd.md` 기능 인덱스 업데이트
|
|
79
|
+
- 인터뷰 로그: `.timsquad/logs/grill-[feature]-[date].md`
|
|
80
|
+
|
|
81
|
+
## Rules
|
|
82
|
+
|
|
83
|
+
- 사용자 답변을 임의로 해석하지 않는다 — 확인 후 기록
|
|
84
|
+
- "아직 모르겠다"는 TBD로 표시하되, 결정이 필요한 시점을 명시
|
|
85
|
+
- SSOT 외 파일 수정 금지
|
|
86
|
+
- Sub-PRD 생성 후 사용자에게 리뷰 요청 (Human Checkpoint)
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description:
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
name: tsq-hono
|
|
3
|
+
description: |
|
|
4
|
+
Hono Framework 백엔드 개발 가이드라인. 비동기 우선, Zod 타입 안전, Clean Architecture 레이어 분리.
|
|
5
|
+
Use when: Hono 라우트 작성, Node.js 백엔드 구현, 미들웨어 설계, API 엔드포인트 개발, zValidator 사용 시.
|
|
6
|
+
version: "1.1.0"
|
|
7
|
+
tags: [tsq, hono, nodejs, backend]
|
|
6
8
|
user-invocable: false
|
|
7
9
|
---
|
|
8
10
|
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tsq-librarian
|
|
3
|
+
description: |
|
|
4
|
+
Phase 종합 기록, Phase Memory 생성, SSOT 상태 갱신, 문서 작성 전담 스킬.
|
|
5
|
+
Phase 완료 시 controller가 호출하여 Trail 추출 + Memory 생성 + 종합 리포트를 생성한다.
|
|
6
|
+
Use when: Phase 완료 후 기록, 리포트 작성, SSOT 상태 점검, 문서 갱신, 로그 정리 시.
|
|
7
|
+
version: "2.0.0"
|
|
8
|
+
tags: [tsq, librarian, recording, documentation, phase-report, phase-memory]
|
|
9
|
+
user-invocable: false
|
|
10
|
+
context: fork
|
|
11
|
+
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Librarian (Phase 기록 + Memory 전담)
|
|
15
|
+
|
|
16
|
+
Phase 종합 기록 전담. 문서 작성/갱신만 수행하고 소스 코드를 수정하지 않는다.
|
|
17
|
+
Phase Trail을 아카이브하고, 다음 Phase를 위한 Phase Memory를 생성한다.
|
|
18
|
+
|
|
19
|
+
## Contract
|
|
20
|
+
|
|
21
|
+
- **Trigger**: Phase 완료 시 controller의 phase-complete 트리거가 호출
|
|
22
|
+
- **Input**: L1/L2/L3 로그 + Decision Log + SSOT 현재 상태 + Phase 정보
|
|
23
|
+
- **Output**: Phase Trail + Phase Memory + 종합 리포트 + context note
|
|
24
|
+
- **Error**: 기록 실패 시 에러 리포트만 생성 (프로세스 차단 안 함)
|
|
25
|
+
- **Dependencies**: tsq-protocol
|
|
26
|
+
|
|
27
|
+
## Protocol
|
|
28
|
+
|
|
29
|
+
1. **L1/L2 로그 수집**: `.timsquad/logs/` 하위 해당 Phase 로그 전체 읽기
|
|
30
|
+
2. **Decision Log 수집**: `.timsquad/state/decisions.jsonl` 읽기
|
|
31
|
+
3. **SSOT 상태 확인 + Carry-over**:
|
|
32
|
+
- `.compile-manifest.json` hash 비교 → stale 목록 식별
|
|
33
|
+
- `.timsquad/.daemon/drift-warnings.json` 존재 시 drift 항목도 carry-over에 포함
|
|
34
|
+
- Stale + Drift 항목은 carry-over로 기록 (다음 Phase의 Architect가 갱신)
|
|
35
|
+
- SSOT 내용 직접 수정 금지 (메타데이터 last_reviewed, status만 갱신 허용)
|
|
36
|
+
4. **Phase Trail 작성**: `.timsquad/trails/phase-{id}.md` 생성
|
|
37
|
+
- 작업 요약 (L1/L2/L3에서 뭘 했는지)
|
|
38
|
+
- 주요 의사결정 (decisions.jsonl에서 추출, 이유 포함)
|
|
39
|
+
- 막혔던 점과 해결 방법
|
|
40
|
+
- 보류/carry-over 항목 (carry_over: true인 결정들)
|
|
41
|
+
5. **Phase Memory 아카이브 + 새 HEAD 생성**:
|
|
42
|
+
a. 현재 `phase-memory.md` → `trails/phase-{id}-memory.md` 복사 (아카이브)
|
|
43
|
+
b. 새 `phase-memory.md` 생성 (~50줄 엄수):
|
|
44
|
+
```yaml
|
|
45
|
+
---
|
|
46
|
+
phase: {new-phase-id}
|
|
47
|
+
prev: trails/phase-{id}-memory.md
|
|
48
|
+
created: {ISO8601}
|
|
49
|
+
---
|
|
50
|
+
```
|
|
51
|
+
c. 본문: 이전 Phase 한 줄 요약 + 핵심 결정 (최대 5개, carry_over 우선) + 주의사항 + carry-over
|
|
52
|
+
d. 에이전트 참조 규칙: HEAD만 기본 읽기. 필요시 prev 링크 따라 최대 3단계 추적
|
|
53
|
+
6. **Decision Log 아카이브**:
|
|
54
|
+
- decisions.jsonl → trails/phase-{id}-decisions.jsonl 복사
|
|
55
|
+
- decisions.jsonl 초기화 (빈 파일)
|
|
56
|
+
7. **Trails 정리**: trails/ 내 memory 아카이브가 10개 초과 시 가장 오래된 것부터 삭제
|
|
57
|
+
8. **종합 리포트 + Context Note 작성**
|
|
58
|
+
- `.timsquad/reports/{phase}-report.md` 생성
|
|
59
|
+
- `docs/sprint/` 하위에 다음 Phase 맥락 문서
|
|
60
|
+
|
|
61
|
+
## Constraints
|
|
62
|
+
|
|
63
|
+
- **소스 코드(src/, lib/, app/) 수정 절대 금지**
|
|
64
|
+
- `.timsquad/` 및 `docs/` 내 문서 작성·갱신만 허용
|
|
65
|
+
- 기록, 분석, 리포트 작성만 수행
|
|
66
|
+
|
|
67
|
+
## Verification
|
|
68
|
+
|
|
69
|
+
| Check | Command | Pass Criteria |
|
|
70
|
+
|-------|---------|---------------|
|
|
71
|
+
| Trail 생성 | `ls .timsquad/trails/phase-*.md` | 파일 존재 |
|
|
72
|
+
| Memory HEAD | `head -5 .timsquad/state/phase-memory.md` | prev 링크 포함, ~50줄 |
|
|
73
|
+
| Memory 아카이브 | `ls .timsquad/trails/phase-*-memory.md` | 이전 memory 아카이브 존재 |
|
|
74
|
+
| 리포트 생성 | `ls .timsquad/reports/{phase}-report.md` | 파일 존재 |
|
|
75
|
+
| Decision 아카이브 | `ls .timsquad/trails/phase-*-decisions.jsonl` | 파일 존재 |
|
|
76
|
+
| SSOT stale carry-over | phase-memory.md 내 carry-over 확인 | stale 항목 기록됨 |
|
|
77
|
+
| Trails GC | `ls .timsquad/trails/phase-*-memory.md \| wc -l` | 10개 이하 |
|
|
78
|
+
| 소스 무변경 | `git diff --name-only src/ lib/ app/` | 변경 없음 |
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tsq-log
|
|
3
|
+
description: |
|
|
4
|
+
작업 로그 관리. 로그 추가, 조회, 시퀀스/Phase 로그 생성.
|
|
5
|
+
Use when: /tsq-log, "로그 추가", "작업 기록", "로그 확인", "L1 로그", "L2 로그"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
tags: [tsq, log, recording]
|
|
8
|
+
user-invocable: true
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# /tsq-log — Work Log Management
|
|
12
|
+
|
|
13
|
+
## Protocol
|
|
14
|
+
|
|
15
|
+
### 로그 추가 (`/tsq-log add <message>`)
|
|
16
|
+
1. 현재 날짜/시간 + 에이전트명 + 메시지로 로그 엔트리 생성
|
|
17
|
+
2. `.timsquad/logs/{date}-{agent}.md`에 append
|
|
18
|
+
3. 타입 자동 분류: work, decision, issue
|
|
19
|
+
|
|
20
|
+
### 로그 조회 (`/tsq-log` or `/tsq-log list`)
|
|
21
|
+
1. `.timsquad/logs/` 최근 로그 파일 목록 출력
|
|
22
|
+
2. 오늘 날짜 로그가 있으면 내용 요약
|
|
23
|
+
|
|
24
|
+
### 시퀀스 로그 (`/tsq-log sequence <id>`)
|
|
25
|
+
1. 해당 시퀀스의 L1 로그를 수집
|
|
26
|
+
2. L2 시퀀스 로그 생성 (`.timsquad/logs/sequences/`)
|
|
27
|
+
|
|
28
|
+
### Phase 로그 (`/tsq-log phase <id>`)
|
|
29
|
+
1. 해당 Phase의 L2 로그를 수집
|
|
30
|
+
2. L3 Phase 로그 생성 (`.timsquad/logs/phases/`)
|