phasegate 0.16.0 → 0.31.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.ja.md +71 -39
- package/README.md +69 -9
- package/docs/ADR/ADR-013-story-reflection-gate.md +100 -0
- package/docs/guide/configuration.md +244 -7
- package/package.json +4 -2
- package/scripts/harness/adr-foundation/domain/ports/adr-document-parser-port.ts +1 -0
- package/scripts/harness/adr-foundation/domain/ports/adr-frontmatter-parser-port.ts +1 -0
- package/scripts/harness/adr-foundation/domain/ports/adr-repository-port.ts +1 -0
- package/scripts/harness/adr-foundation/domain/value-objects/adr-status.ts +6 -6
- package/scripts/harness/agent-integration/application/dto/handle-pre-tool-use-dto.ts +3 -1
- package/scripts/harness/agent-integration/application/usecases/handle-pre-tool-use-usecase.ts +108 -2
- package/scripts/harness/agent-integration/domain/ports/config-query-port.ts +2 -0
- package/scripts/harness/agent-integration/domain/ports/phase-gate-query-port.ts +1 -1
- package/scripts/harness/agent-integration/domain/ports/story-reflection-query-port.ts +8 -0
- package/scripts/harness/agent-integration/domain/services/bash-write-target-extractor.ts +258 -0
- package/scripts/harness/agent-integration/domain/services/hook-to-cli-translator.ts +21 -4
- package/scripts/harness/agent-integration/domain/value-objects/protected-file-list.ts +20 -0
- package/scripts/harness/agent-integration/domain/value-objects/story-reflection-query-result.ts +63 -0
- package/scripts/harness/agent-integration/infrastructure/adapters/file-system-story-reflection-query-adapter.ts +122 -0
- package/scripts/harness/agent-integration/infrastructure/adapters/harness-config-config-query-adapter.ts +20 -0
- package/scripts/harness/agent-integration/infrastructure/adapters/phase-gate-query-adapter.ts +17 -3
- package/scripts/harness/agent-integration/presentation/pre-tool-use-hook.ts +29 -2
- package/scripts/harness/biome-ast-engine/domain/services/lint-runner.ts +24 -0
- package/scripts/harness/biome-ast-engine/domain/services/rule-definition-registry.ts +1 -1
- package/scripts/harness/biome-ast-engine/domain/value-objects/source-module-snapshot.ts +5 -2
- package/scripts/harness/biome-ast-engine/infrastructure/adapters/node-workspace-file-adapter.ts +1 -1
- package/scripts/harness/biome-ast-engine/infrastructure/adapters/typescript-source-module-analyzer-adapter.ts +1 -1
- package/scripts/harness/biome-ast-engine/infrastructure/parsers/unit-comment-parser.ts +12 -7
- package/scripts/harness/ci-governance/composition-root.ts +1 -0
- package/scripts/harness/config-foundation/application/mappers/phase-config-section-mapper.ts +44 -0
- package/scripts/harness/config-foundation/application/usecases/load-resolved-config-use-case.ts +20 -1
- package/scripts/harness/config-foundation/domain/harness-config.ts +2 -1
- package/scripts/harness/config-foundation/domain/value-objects/phase-dependencies-config.ts +18 -4
- package/scripts/harness/config-foundation/infrastructure/schemas/harness-config-v2.schema.json +185 -10
- package/scripts/harness/config-foundation/infrastructure/validators/ajv-config-schema-validator.ts +2 -1
- package/scripts/harness/harness-api/application/dto/command-dispatch-input.ts +1 -0
- package/scripts/harness/harness-api/application/dto/command-dispatch-output.ts +1 -0
- package/scripts/harness/harness-api/application/dto/exit-code-decision-input.ts +1 -0
- package/scripts/harness/harness-api/application/dto/exit-code-decision-output.ts +1 -0
- package/scripts/harness/harness-api/application/dto/harness-api-response-contract.ts +1 -0
- package/scripts/harness/harness-api/application/dto/initialize-registry-input.ts +1 -0
- package/scripts/harness/harness-api/application/dto/registry-summary-output.ts +1 -0
- package/scripts/harness/harness-api/application/dto/status-derivation-input.ts +1 -0
- package/scripts/harness/harness-api/application/mappers/harness-api-response-mapper.ts +1 -0
- package/scripts/harness/harness-api/application/usecases/decide-exit-code-usecase.ts +1 -0
- package/scripts/harness/harness-api/application/usecases/derive-harness-status-usecase.ts +1 -0
- package/scripts/harness/harness-api/application/usecases/dispatch-command-usecase.ts +1 -0
- package/scripts/harness/harness-api/application/usecases/initialize-command-registry-usecase.ts +1 -0
- package/scripts/harness/harness-api/composition-root.ts +1 -0
- package/scripts/harness/harness-api/domain/ports/artifact-scanner-port.ts +1 -0
- package/scripts/harness/harness-api/domain/ports/biome-lint-port.ts +1 -0
- package/scripts/harness/harness-api/domain/ports/config-query-port.ts +1 -0
- package/scripts/harness/harness-api/domain/ports/impact-analysis-port.ts +1 -0
- package/scripts/harness/harness-api/domain/ports/phase-gate-query-port.ts +1 -0
- package/scripts/harness/harness-api/domain/ports/validator-execution-port.ts +1 -0
- package/scripts/harness/harness-api/domain/services/command-dispatch-service.ts +1 -0
- package/scripts/harness/harness-api/domain/services/command-registry.ts +1 -0
- package/scripts/harness/harness-api/domain/services/status-derivation-service.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/artifact-scan-result.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/check-ready-result.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/ci-check-result.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/cli-command-definition.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/command-input-spec.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/drift-report-summary.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/exit-code-spec.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/harness-api-response.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/harness-status-summary.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/layer-health.ts +1 -0
- package/scripts/harness/harness-api/domain/value-objects/phase-info.ts +1 -0
- package/scripts/harness/harness-api/index.ts +1 -0
- package/scripts/harness/harness-api/infrastructure/adapters/biome-ast-engine-lint-adapter.ts +1 -0
- package/scripts/harness/harness-api/infrastructure/adapters/file-system-artifact-scanner-adapter.ts +1 -0
- package/scripts/harness/harness-api/infrastructure/adapters/harness-config-query-adapter.ts +1 -0
- package/scripts/harness/harness-api/infrastructure/adapters/nyquist-validation-impact-analysis-adapter.ts +1 -0
- package/scripts/harness/harness-api/infrastructure/adapters/phase-dependency-model-query-adapter.ts +1 -0
- package/scripts/harness/harness-api/infrastructure/adapters/validator-system-execution-adapter.ts +1 -0
- package/scripts/harness/harness-api/presentation/dto/cli-output-options.ts +1 -0
- package/scripts/harness/harness-api/presentation/formatters/harness-api-json-formatter.ts +1 -0
- package/scripts/harness/harness-api/presentation/handlers/check-phase-handler.ts +1 -0
- package/scripts/harness/harness-api/presentation/handlers/check-ready-handler.ts +1 -0
- package/scripts/harness/harness-api/presentation/handlers/ci-check-handler.ts +1 -0
- package/scripts/harness/harness-api/presentation/handlers/complete-check-handler.ts +1 -0
- package/scripts/harness/harness-api/presentation/handlers/detect-drift-handler.ts +1 -0
- package/scripts/harness/harness-api/presentation/handlers/impact-analysis-handler.ts +1 -0
- package/scripts/harness/harness-api/presentation/handlers/lint-handler.ts +1 -0
- package/scripts/harness/harness-api/presentation/handlers/status-handler.ts +1 -0
- package/scripts/harness/harness-error/infrastructure/adapters/legacy-error-reporter-adapter.ts +7 -1
- package/scripts/harness/integrations/pre-commit.ts +1 -0
- package/scripts/harness/main.ts +154 -34
- package/scripts/harness/phase-dependency-model/application/dto/resolve-gate-result-dto.ts +14 -0
- package/scripts/harness/phase-dependency-model/application/services/phase-gate-result-mapper.ts +20 -0
- package/scripts/harness/phase-dependency-model/application/usecases/check-story-reflection-usecase.ts +42 -0
- package/scripts/harness/phase-dependency-model/application/usecases/resolve-gate-usecase.ts +161 -0
- package/scripts/harness/phase-dependency-model/composition-root.ts +57 -1
- package/scripts/harness/phase-dependency-model/domain/definitions/{default-phase-dependencies.ts → full-phase-dependencies.ts} +3 -3
- package/scripts/harness/phase-dependency-model/domain/definitions/{default-phase-nodes.ts → full-phase-nodes.ts} +1 -1
- package/scripts/harness/phase-dependency-model/domain/definitions/full-story-reflection-defaults.ts +28 -0
- package/scripts/harness/phase-dependency-model/domain/definitions/minimal-phase-dependencies.ts +32 -0
- package/scripts/harness/phase-dependency-model/domain/definitions/minimal-phase-nodes.ts +50 -0
- package/scripts/harness/phase-dependency-model/domain/definitions/minimal-story-reflection-defaults.ts +8 -0
- package/scripts/harness/phase-dependency-model/domain/definitions/standard-phase-dependencies.ts +39 -0
- package/scripts/harness/phase-dependency-model/domain/definitions/standard-phase-nodes.ts +118 -0
- package/scripts/harness/phase-dependency-model/domain/definitions/standard-story-reflection-defaults.ts +23 -0
- package/scripts/harness/phase-dependency-model/domain/models/phase-structure.ts +95 -23
- package/scripts/harness/phase-dependency-model/domain/ports/glob-matcher-port.ts +8 -0
- package/scripts/harness/phase-dependency-model/domain/ports/phase-config-provider-port.ts +2 -0
- package/scripts/harness/phase-dependency-model/domain/ports/story-annotation-verifier-port.ts +14 -0
- package/scripts/harness/phase-dependency-model/domain/ports/story-reflection-file-system-port.ts +16 -0
- package/scripts/harness/phase-dependency-model/domain/services/gate-graph.ts +223 -0
- package/scripts/harness/phase-dependency-model/domain/services/story-reflection-checker.ts +66 -0
- package/scripts/harness/phase-dependency-model/domain/values/gate-definition.ts +127 -0
- package/scripts/harness/phase-dependency-model/domain/values/gate-name.ts +40 -0
- package/scripts/harness/phase-dependency-model/domain/values/gate-story-annotation.ts +39 -0
- package/scripts/harness/phase-dependency-model/domain/values/phase-customization-policy.ts +16 -4
- package/scripts/harness/phase-dependency-model/domain/values/story-reflection-config.ts +44 -0
- package/scripts/harness/phase-dependency-model/domain/values/story-reflection-mapping.ts +91 -0
- package/scripts/harness/phase-dependency-model/domain/values/story-reflection-result.ts +55 -0
- package/scripts/harness/phase-dependency-model/infrastructure/adapters/picomatch-glob-matcher.ts +17 -0
- package/scripts/harness/phase-dependency-model/infrastructure/adapters/story-annotation-verifier-adapter.ts +46 -0
- package/scripts/harness/phase-dependency-model/infrastructure/config/custom-gates-config-parser.ts +22 -0
- package/scripts/harness/phase-dependency-model/infrastructure/config/harness-config-phase-config-provider.ts +78 -2
- package/scripts/harness/phase-dependency-model/infrastructure/filesystem/file-system-story-reflection-adapter.ts +94 -0
- package/scripts/harness/phase-dependency-model/presentation/cli/check-phase-gate-command-handler.ts +12 -4
- package/scripts/harness/phase-dependency-model/presentation/cli/story-reflection-status-presenter.ts +87 -0
- package/scripts/harness/regression-suite/application/dto/analyze-migration-input.ts +1 -0
- package/scripts/harness/regression-suite/application/dto/analyze-migration-output.ts +1 -0
- package/scripts/harness/regression-suite/application/dto/configure-ci-gate-input.ts +1 -0
- package/scripts/harness/regression-suite/application/dto/configure-ci-gate-output.ts +1 -0
- package/scripts/harness/regression-suite/application/dto/migrate-v0-tests-input.ts +1 -0
- package/scripts/harness/regression-suite/application/dto/migrate-v0-tests-output.ts +1 -0
- package/scripts/harness/regression-suite/application/dto/run-regression-suite-input.ts +1 -0
- package/scripts/harness/regression-suite/application/dto/run-regression-suite-output.ts +1 -0
- package/scripts/harness/regression-suite/application/mappers/migration-mapping-mapper.ts +1 -0
- package/scripts/harness/regression-suite/application/mappers/test-execution-summary-mapper.ts +1 -0
- package/scripts/harness/regression-suite/application/usecases/analyze-v0-migration-usecase.ts +1 -0
- package/scripts/harness/regression-suite/application/usecases/configure-ci-gate-usecase.ts +1 -0
- package/scripts/harness/regression-suite/application/usecases/migrate-v0-tests-usecase.ts +1 -0
- package/scripts/harness/regression-suite/application/usecases/run-agent-independence-guard-usecase.ts +1 -0
- package/scripts/harness/regression-suite/application/usecases/run-gng-gate-regression-usecase.ts +1 -0
- package/scripts/harness/regression-suite/application/usecases/run-k-requirements-regression-usecase.ts +1 -0
- package/scripts/harness/regression-suite/application/usecases/run-k14-k15-regression-usecase.ts +1 -0
- package/scripts/harness/regression-suite/composition-root.ts +1 -0
- package/scripts/harness/regression-suite/domain/aggregates/v0-test-migration.ts +1 -0
- package/scripts/harness/regression-suite/domain/ports/ci-gate-result-writer-port.ts +1 -0
- package/scripts/harness/regression-suite/domain/ports/config-query-port.ts +1 -0
- package/scripts/harness/regression-suite/domain/ports/import-analyzer-port.ts +1 -0
- package/scripts/harness/regression-suite/domain/ports/migration-mapping-repository-port.ts +1 -0
- package/scripts/harness/regression-suite/domain/ports/suite-registry-port.ts +1 -0
- package/scripts/harness/regression-suite/domain/ports/test-runner-port.ts +1 -0
- package/scripts/harness/regression-suite/domain/ports/v0-spec-reader-port.ts +1 -0
- package/scripts/harness/regression-suite/domain/services/import-guard-service.ts +1 -0
- package/scripts/harness/regression-suite/domain/services/migration-analyzer.ts +1 -0
- package/scripts/harness/regression-suite/domain/services/regression-runner.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/agent-independence-test.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/biome-modification-spec.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/ci-gate-config.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/coverage-rate.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/gng-condition-test.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/import-violation.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/k-requirement-test.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/migration-mapping.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/regression-suite-definition.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/suite-id.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/test-execution-summary.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/test-failure-detail.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/v0-test-id.ts +1 -0
- package/scripts/harness/regression-suite/domain/value-objects/v1-test-path.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/adapters/biome-ast-import-analyzer-adapter.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/adapters/file-system-v0-spec-reader-adapter.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/adapters/harness-config-query-adapter.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/adapters/json-ci-gate-result-writer-adapter.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/adapters/markdown-migration-mapping-repository-adapter.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/adapters/static-suite-registry-adapter.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/adapters/vitest-test-runner-adapter.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/registry/agent-independence-suite-definition.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/registry/gng-gate-suite-definition.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/registry/k-requirements-suite-definition.ts +1 -0
- package/scripts/harness/regression-suite/infrastructure/registry/v0-migration-suite-definition.ts +1 -0
- package/scripts/harness/setup/skill-deployer.ts +82 -5
- package/scripts/harness/shared-kernel/harness-api.ts +1 -0
- package/scripts/harness/skill-quality/composition-root.ts +1 -0
- package/scripts/harness/skill-quality/infrastructure/adapters/ajv-lesson-artifact-schema-adapter.ts +5 -4
- package/scripts/harness/traceability-model/domain/services/metadata-validator.ts +12 -10
- package/scripts/harness/traceability-model/infrastructure/parsers/source-metadata-parser.ts +16 -2
- package/skills/cascade-updater/SKILL.md +16 -3
- package/skills/codebase-mapper/SKILL.md +9 -9
- package/skills/codex-delegator/SKILL.md +5 -56
- package/skills/consistency-checker/SKILL.md +5 -9
- package/skills/consistency-checker/references//343/203/201/343/202/247/343/203/203/343/202/257/343/203/252/343/202/271/343/203/210.md +6 -3
- package/skills/doc-freshness-checker/SKILL.md +6 -6
- package/skills/engineering-perspective/SKILL.md +2 -58
- package/skills/engineering-perspective/references/domain-model.md +4 -135
- package/skills/implementation-readiness-checker/SKILL.md +18 -72
- package/skills/it-test-designer/SKILL.md +25 -161
- package/skills/it-test-designer/references/it-test-design-template.md +131 -0
- package/skills/it-test-logic-designer/SKILL.md +13 -388
- package/skills/it-test-logic-designer/references/controller-test-patterns.md +100 -0
- package/skills/it-test-logic-designer/references/repository-test-patterns.md +206 -0
- package/skills/it-test-logic-designer/references/usecase-test-patterns.md +87 -0
- package/skills/pointer-validator/SKILL.md +4 -4
- package/skills/scenario-test-designer/SKILL.md +4 -68
- package/skills/scenario-test-designer/references/scenario-test-design-template.md +41 -0
- package/skills/scenario-test-designer/references/scenario-test-plan-template.md +35 -0
- package/skills/scenario-test-logic-designer/SKILL.md +21 -304
- package/skills/scenario-test-logic-designer/references/msw-patterns.md +36 -0
- package/skills/scenario-test-logic-designer/references/playwright-patterns.md +237 -0
- package/skills/test-coverage-checker/SKILL.md +39 -121
- package/skills/test-coverage-checker/references/coverage-report-template.md +99 -0
- package/skills/uiux-designer/SKILL.md +27 -92
- package/skills/uiux-designer/references/data-testid-convention.md +38 -0
- package/skills/uiux-designer/references/uiux-design-template.md +105 -0
- package/skills/unit-test-designer/SKILL.md +5 -106
- package/skills/unit-test-designer/references/unit-test-design-template.md +127 -0
- package/skills/unit-test-logic-designer/SKILL.md +28 -250
- package/skills/unit-test-logic-designer/references/test-patterns.md +207 -0
package/scripts/harness/regression-suite/infrastructure/adapters/static-suite-registry-adapter.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @layer infrastructure
|
|
1
2
|
import type { SuiteId } from '../../domain/value-objects/suite-id.js';
|
|
2
3
|
import type { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
|
|
3
4
|
import type { SuiteRegistryPort } from '../../domain/ports/suite-registry-port.js';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @layer infrastructure
|
|
1
2
|
import { SuiteId } from '../../domain/value-objects/suite-id.js';
|
|
2
3
|
import { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
|
|
3
4
|
import { AgentIndependenceTest } from '../../domain/value-objects/agent-independence-test.js';
|
package/scripts/harness/regression-suite/infrastructure/registry/gng-gate-suite-definition.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @layer infrastructure
|
|
1
2
|
import { SuiteId } from '../../domain/value-objects/suite-id.js';
|
|
2
3
|
import { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
|
|
3
4
|
import { GngConditionTest } from '../../domain/value-objects/gng-condition-test.js';
|
package/scripts/harness/regression-suite/infrastructure/registry/k-requirements-suite-definition.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @layer infrastructure
|
|
1
2
|
import { SuiteId } from '../../domain/value-objects/suite-id.js';
|
|
2
3
|
import { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
|
|
3
4
|
import { KRequirementTest } from '../../domain/value-objects/k-requirement-test.js';
|
package/scripts/harness/regression-suite/infrastructure/registry/v0-migration-suite-definition.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @layer infrastructure
|
|
1
2
|
import { SuiteId } from '../../domain/value-objects/suite-id.js';
|
|
2
3
|
import { RegressionSuiteDefinition } from '../../domain/value-objects/regression-suite-definition.js';
|
|
3
4
|
import { KRequirementTest } from '../../domain/value-objects/k-requirement-test.js';
|
|
@@ -18,16 +18,86 @@ const HARNESS_CONFIG_FILE = 'phasegate.config.json';
|
|
|
18
18
|
const HOOKS_TEMPLATE_DIR = join('templates', '.claude');
|
|
19
19
|
const HOOKS_TARGET_DIR = '.claude';
|
|
20
20
|
|
|
21
|
+
// ── Skill Category Map ──
|
|
22
|
+
|
|
23
|
+
export type SkillCategory = 'core' | 'aidlc' | 'utility';
|
|
24
|
+
export type SkillSet = 'core' | 'all';
|
|
25
|
+
|
|
26
|
+
export const SKILL_CATEGORIES: Record<SkillCategory, readonly string[]> = {
|
|
27
|
+
core: [
|
|
28
|
+
'cascade-updater',
|
|
29
|
+
'codebase-mapper',
|
|
30
|
+
'consistency-checker',
|
|
31
|
+
'doc-freshness-checker',
|
|
32
|
+
'engineering-perspective',
|
|
33
|
+
'implementation-readiness-checker',
|
|
34
|
+
'pointer-validator',
|
|
35
|
+
'test-coverage-checker',
|
|
36
|
+
],
|
|
37
|
+
aidlc: [
|
|
38
|
+
'domain-designer',
|
|
39
|
+
'environment-designer',
|
|
40
|
+
'implementation-planner',
|
|
41
|
+
'it-test-designer',
|
|
42
|
+
'it-test-logic-designer',
|
|
43
|
+
'logical-designer',
|
|
44
|
+
'mock-designer',
|
|
45
|
+
'product-architect',
|
|
46
|
+
'quick-implementor',
|
|
47
|
+
'scenario-test-designer',
|
|
48
|
+
'scenario-test-logic-designer',
|
|
49
|
+
'story-implementor',
|
|
50
|
+
'story-mapper',
|
|
51
|
+
'story-writer',
|
|
52
|
+
'uiux-designer',
|
|
53
|
+
'unit-designer',
|
|
54
|
+
'unit-test-designer',
|
|
55
|
+
'unit-test-logic-designer',
|
|
56
|
+
],
|
|
57
|
+
utility: [
|
|
58
|
+
'codex-delegator',
|
|
59
|
+
'skill-creator',
|
|
60
|
+
],
|
|
61
|
+
} as const;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* 指定された SkillSet に含まれるスキル名の一覧を返す。
|
|
65
|
+
*/
|
|
66
|
+
export function getSkillsForSet(skillSet: SkillSet): string[] {
|
|
67
|
+
if (skillSet === 'core') {
|
|
68
|
+
return [...SKILL_CATEGORIES.core];
|
|
69
|
+
}
|
|
70
|
+
return [
|
|
71
|
+
...SKILL_CATEGORIES.core,
|
|
72
|
+
...SKILL_CATEGORIES.aidlc,
|
|
73
|
+
...SKILL_CATEGORIES.utility,
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* スキル名からカテゴリを逆引きする。未知のスキルは null を返す。
|
|
79
|
+
*/
|
|
80
|
+
export function getCategoryForSkill(skillName: string): SkillCategory | null {
|
|
81
|
+
for (const [category, skills] of Object.entries(SKILL_CATEGORIES)) {
|
|
82
|
+
if ((skills as readonly string[]).includes(skillName)) {
|
|
83
|
+
return category as SkillCategory;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
|
|
21
89
|
export interface DeployResult {
|
|
22
90
|
deployedSkills: string[];
|
|
23
91
|
targetDir: string;
|
|
24
92
|
version: string;
|
|
25
93
|
deployedAt: string;
|
|
94
|
+
skillSet: SkillSet;
|
|
26
95
|
}
|
|
27
96
|
|
|
28
97
|
export interface VersionInfo {
|
|
29
98
|
version: string;
|
|
30
99
|
deployedAt: string;
|
|
100
|
+
skillSet?: SkillSet;
|
|
31
101
|
}
|
|
32
102
|
|
|
33
103
|
interface PkgJson {
|
|
@@ -65,14 +135,20 @@ async function copyDirectory(src: string, dest: string): Promise<number> {
|
|
|
65
135
|
* @param harnessRoot - harnessパッケージのルートディレクトリ(skills/がある場所)
|
|
66
136
|
* @param projectRoot - デプロイ先プロジェクトのルートディレクトリ
|
|
67
137
|
*/
|
|
68
|
-
export async function deploySkills(
|
|
138
|
+
export async function deploySkills(
|
|
139
|
+
harnessRoot: string,
|
|
140
|
+
projectRoot: string,
|
|
141
|
+
skillSet: SkillSet = 'all',
|
|
142
|
+
): Promise<DeployResult> {
|
|
69
143
|
const skillsSource = join(harnessRoot, SKILLS_SOURCE_DIR);
|
|
70
144
|
const skillsTarget = join(projectRoot, SKILLS_TARGET_DIR);
|
|
71
145
|
const version = await getHarnessVersion(harnessRoot);
|
|
72
146
|
const deployedAt = new Date().toISOString();
|
|
73
147
|
|
|
74
148
|
const skillDirs = await fs.readdir(skillsSource, { withFileTypes: true });
|
|
75
|
-
const
|
|
149
|
+
const allSkills = skillDirs.filter((d) => d.isDirectory()).map((d) => d.name);
|
|
150
|
+
const allowedSkills = getSkillsForSet(skillSet);
|
|
151
|
+
const skills = allSkills.filter((s) => allowedSkills.includes(s));
|
|
76
152
|
|
|
77
153
|
await fs.mkdir(skillsTarget, { recursive: true });
|
|
78
154
|
|
|
@@ -82,14 +158,14 @@ export async function deploySkills(harnessRoot: string, projectRoot: string): Pr
|
|
|
82
158
|
await copyDirectory(srcSkillDir, destSkillDir);
|
|
83
159
|
}
|
|
84
160
|
|
|
85
|
-
const versionInfo: VersionInfo = { version, deployedAt };
|
|
161
|
+
const versionInfo: VersionInfo = { version, deployedAt, skillSet };
|
|
86
162
|
await fs.writeFile(
|
|
87
163
|
join(skillsTarget, HARNESS_VERSION_FILE),
|
|
88
164
|
JSON.stringify(versionInfo, null, 2) + '\n',
|
|
89
165
|
'utf-8',
|
|
90
166
|
);
|
|
91
167
|
|
|
92
|
-
return { deployedSkills: skills, targetDir: skillsTarget, version, deployedAt };
|
|
168
|
+
return { deployedSkills: skills, targetDir: skillsTarget, version, deployedAt, skillSet };
|
|
93
169
|
}
|
|
94
170
|
|
|
95
171
|
/**
|
|
@@ -176,6 +252,7 @@ export async function deployHookScripts(
|
|
|
176
252
|
export async function initHarnessConfig(
|
|
177
253
|
projectRoot: string,
|
|
178
254
|
projectName: string,
|
|
255
|
+
phasePreset?: 'full' | 'standard' | 'minimal' | 'custom',
|
|
179
256
|
): Promise<{ created: boolean; path: string }> {
|
|
180
257
|
const configPath = join(projectRoot, HARNESS_CONFIG_FILE);
|
|
181
258
|
try {
|
|
@@ -193,7 +270,7 @@ export async function initHarnessConfig(
|
|
|
193
270
|
layers: {},
|
|
194
271
|
quickMode: {},
|
|
195
272
|
phaseDependencies: {
|
|
196
|
-
preset: 'default',
|
|
273
|
+
preset: phasePreset ?? 'default',
|
|
197
274
|
override: false,
|
|
198
275
|
customRules: [],
|
|
199
276
|
},
|
package/scripts/harness/skill-quality/infrastructure/adapters/ajv-lesson-artifact-schema-adapter.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* @layer infrastructure
|
|
3
3
|
* @unit skill-quality
|
|
4
4
|
*/
|
|
5
|
-
import
|
|
5
|
+
import AjvModule from 'ajv';
|
|
6
|
+
const Ajv = (AjvModule as any).default ?? AjvModule;
|
|
6
7
|
import type { LessonArtifactSchemaPort } from '../../domain/ports/lesson-artifact-schema-port.js';
|
|
7
8
|
import type { ValidationViolation } from '../../domain/types/validation-violation.js';
|
|
8
9
|
|
|
@@ -17,8 +18,8 @@ const LESSON_ARTIFACT_SCHEMA = {
|
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
export class AjvLessonArtifactSchemaAdapter implements LessonArtifactSchemaPort {
|
|
20
|
-
private readonly ajv: Ajv
|
|
21
|
-
private readonly compiledValidator: ReturnType<Ajv[
|
|
21
|
+
private readonly ajv: InstanceType<typeof Ajv>;
|
|
22
|
+
private readonly compiledValidator: ReturnType<InstanceType<typeof Ajv>["compile"]>;
|
|
22
23
|
|
|
23
24
|
constructor() {
|
|
24
25
|
this.ajv = new Ajv();
|
|
@@ -28,7 +29,7 @@ export class AjvLessonArtifactSchemaAdapter implements LessonArtifactSchemaPort
|
|
|
28
29
|
async validate(json: unknown): Promise<readonly ValidationViolation[]> {
|
|
29
30
|
const valid = this.compiledValidator(json);
|
|
30
31
|
if (valid) return [];
|
|
31
|
-
return (this.compiledValidator.errors ?? []).map((err) => ({
|
|
32
|
+
return (this.compiledValidator.errors ?? []).map((err: any) => ({
|
|
32
33
|
ruleId: 'SCHEMA_VIOLATION',
|
|
33
34
|
message: err.message ?? 'Schema validation error',
|
|
34
35
|
location: err.instancePath,
|
|
@@ -80,10 +80,10 @@ export class MetadataValidator {
|
|
|
80
80
|
}>;
|
|
81
81
|
}): Promise<MetadataValidationResult> {
|
|
82
82
|
const errors: TraceabilityHarnessError[] = [];
|
|
83
|
-
const
|
|
83
|
+
const unitTags = input.tags.filter((tag) => tag.type === '@unit');
|
|
84
84
|
const layerTag = input.tags.find((tag) => tag.type === '@layer');
|
|
85
85
|
|
|
86
|
-
if (
|
|
86
|
+
if (unitTags.length === 0) {
|
|
87
87
|
errors.push(
|
|
88
88
|
createError({
|
|
89
89
|
message: '@unit が必要です',
|
|
@@ -111,14 +111,16 @@ export class MetadataValidator {
|
|
|
111
111
|
);
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
114
|
+
for (const unitTag of unitTags) {
|
|
115
|
+
if (!(await hasUnit(this.unitDefinitionPort, unitTag.value))) {
|
|
116
|
+
errors.push(
|
|
117
|
+
createError({
|
|
118
|
+
message: `@unit "${unitTag.value}" は unit 定義に存在しません`,
|
|
119
|
+
suggestion: '登録済みの unit 名を指定してください',
|
|
120
|
+
fixExample: '@unit traceability-model',
|
|
121
|
+
}),
|
|
122
|
+
);
|
|
123
|
+
}
|
|
122
124
|
}
|
|
123
125
|
|
|
124
126
|
if (errors.length > 0) {
|
|
@@ -17,6 +17,20 @@ export interface ParsedMetadataTag {
|
|
|
17
17
|
readonly lineNumber: number;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
function expandUnitTags(rawValue: string, lineNumber: number): ParsedMetadataTag[] {
|
|
21
|
+
if (!rawValue.includes(',')) {
|
|
22
|
+
return [{ type: '@unit', value: rawValue.trim(), lineNumber }];
|
|
23
|
+
}
|
|
24
|
+
return rawValue
|
|
25
|
+
.split(',')
|
|
26
|
+
.map((v) => ({
|
|
27
|
+
type: '@unit' as const,
|
|
28
|
+
value: v.trim(),
|
|
29
|
+
lineNumber,
|
|
30
|
+
}))
|
|
31
|
+
.filter((t) => t.value.length > 0);
|
|
32
|
+
}
|
|
33
|
+
|
|
20
34
|
/**
|
|
21
35
|
* 実装ファイル向けに @unit / @layer / @story-id を抽出する
|
|
22
36
|
*/
|
|
@@ -30,7 +44,7 @@ export function parseImplementationTags(content: string): readonly ParsedMetadat
|
|
|
30
44
|
|
|
31
45
|
const unitMatch = UNIT_TAG_PATTERN.exec(line);
|
|
32
46
|
if (unitMatch) {
|
|
33
|
-
tags.push(
|
|
47
|
+
tags.push(...expandUnitTags(unitMatch[1], lineNumber));
|
|
34
48
|
}
|
|
35
49
|
|
|
36
50
|
const layerMatch = LAYER_TAG_PATTERN.exec(line);
|
|
@@ -80,7 +94,7 @@ export function parseAllTags(content: string): readonly ParsedMetadataTag[] {
|
|
|
80
94
|
|
|
81
95
|
const unitMatch = UNIT_TAG_PATTERN.exec(line);
|
|
82
96
|
if (unitMatch) {
|
|
83
|
-
tags.push(
|
|
97
|
+
tags.push(...expandUnitTags(unitMatch[1], lineNumber));
|
|
84
98
|
}
|
|
85
99
|
|
|
86
100
|
const layerMatch = LAYER_TAG_PATTERN.exec(line);
|
|
@@ -9,6 +9,19 @@ review: opus
|
|
|
9
9
|
|
|
10
10
|
下位フェーズでの発見・変更・人間からの指示を、正しいレイヤーの設計文書にフィードバックし、影響範囲を整合的に更新するスキル。
|
|
11
11
|
|
|
12
|
+
## storyReflection ゲート通過の標準手段
|
|
13
|
+
|
|
14
|
+
`phaseDependencies.storyReflection`(ADR-013)は、`docs/inception/{unit}/{storyId}/` 配下の US/issue 設計が `docs/product/construction/{unit}/` の累積設計文書に反映されていない場合、`src/{unit}/*` および `scripts/harness/{unit}/*` への Write/Edit(Bash 迂回経由の書き込みも含む)を pre-tool-use hook でブロックする。
|
|
15
|
+
|
|
16
|
+
**cascade-updater はこの storyReflection ゲートを通過する標準手段である。**
|
|
17
|
+
|
|
18
|
+
- `full` / `standard` プリセットでは、inception の新規 US/issue を作成した後、実装着手前に cascade-updater を実行して product 文書に `@story-id {storyId}` を追記する
|
|
19
|
+
- cascade-updater を実行せずに実装へ進もうとすると `[L2-STORY-REFLECTION]` ブロックが発生する(エラー中で本スキルの実行が案内される)
|
|
20
|
+
- `minimal` プリセットでは storyReflection が無効化されるためゲート連動しないが、cascade-updater による設計整合性の維持は推奨される
|
|
21
|
+
- Quick Mode (`relaxedGates: ["phase-gate"]`) 時は storyReflection も緩和されるため、cascade-updater 実行の必須性は緩まる(ただし品質維持のため実行は推奨)
|
|
22
|
+
|
|
23
|
+
詳細は ADR-013 および `docs/guide/configuration.md` の storyReflection セクションを参照。
|
|
24
|
+
|
|
12
25
|
## 前提条件チェック
|
|
13
26
|
|
|
14
27
|
### 必須インプット
|
|
@@ -21,10 +34,10 @@ review: opus
|
|
|
21
34
|
|
|
22
35
|
**このスキルは3フェーズで実行する。**
|
|
23
36
|
- **Phase 1(計画)**: Opus がスコープ・方針・不明点を整理し、人間の承認を得る
|
|
24
|
-
- **Phase 2(実行)**:
|
|
37
|
+
- **Phase 2(実行)**: プロジェクトのモデルルーティング設定に従い、実行モデルに委譲して成果物を生成する
|
|
25
38
|
- **Phase 3(レビュー)**: Opus が成果物を検証し、問題があれば直接修正する
|
|
26
39
|
|
|
27
|
-
**Phase 1/2/3
|
|
40
|
+
**Phase 1/2/3を同時に実行してはならない。**
|
|
28
41
|
|
|
29
42
|
---
|
|
30
43
|
|
|
@@ -110,7 +123,7 @@ review: opus
|
|
|
110
123
|
|
|
111
124
|
### レビュー手順
|
|
112
125
|
1. Sonnetが出力したファイルを読み込む
|
|
113
|
-
2.
|
|
126
|
+
2. プロジェクトのレビュー基準に沿って検証する
|
|
114
127
|
3. **スキル固有レビュー観点**を検証する
|
|
115
128
|
4. 判定結果を出力する
|
|
116
129
|
|
|
@@ -12,7 +12,7 @@ review: opus
|
|
|
12
12
|
|
|
13
13
|
## 出力物
|
|
14
14
|
|
|
15
|
-
`
|
|
15
|
+
`{constructionDir}/codebase-map.md` — Unit・レイヤー分布・依存関係の可視化文書(パスは `phasegate.config.json` で設定)
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -31,7 +31,7 @@ review: opus
|
|
|
31
31
|
# Codebase Mapper 計画
|
|
32
32
|
|
|
33
33
|
## スキャン対象
|
|
34
|
-
- ソースコード:
|
|
34
|
+
- ソースコード: {phasegate.config.json の sourceDir}
|
|
35
35
|
- 除外: __tests__/, node_modules/
|
|
36
36
|
|
|
37
37
|
## 出力粒度
|
|
@@ -41,7 +41,7 @@ review: opus
|
|
|
41
41
|
- [ ] 循環依存検出
|
|
42
42
|
|
|
43
43
|
## 出力先
|
|
44
|
-
|
|
44
|
+
{constructionDir}/codebase-map.md
|
|
45
45
|
|
|
46
46
|
## QA
|
|
47
47
|
[Question] Q1: ...
|
|
@@ -58,7 +58,7 @@ docs/product/construction/codebase-map.md
|
|
|
58
58
|
|
|
59
59
|
### Step 1: @unit/@layer アノテーションの収集
|
|
60
60
|
|
|
61
|
-
Glob + Read を使い、`
|
|
61
|
+
Glob + Read を使い、`{sourceDir}/**/*.ts`(テスト・fixture除外)から:
|
|
62
62
|
|
|
63
63
|
```
|
|
64
64
|
@unit {unit-name}
|
|
@@ -79,7 +79,7 @@ Unit間依存グラフを深さ優先探索でサイクル検出する。
|
|
|
79
79
|
|
|
80
80
|
### Step 4: マップ文書の生成
|
|
81
81
|
|
|
82
|
-
`
|
|
82
|
+
`{constructionDir}/codebase-map.md` に出力。
|
|
83
83
|
|
|
84
84
|
---
|
|
85
85
|
|
|
@@ -89,7 +89,7 @@ Unit間依存グラフを深さ優先探索でサイクル検出する。
|
|
|
89
89
|
# Codebase Map
|
|
90
90
|
|
|
91
91
|
生成日時: {date}
|
|
92
|
-
スキャン対象:
|
|
92
|
+
スキャン対象: {sourceDir}
|
|
93
93
|
総ファイル数: N(テスト除く)
|
|
94
94
|
|
|
95
95
|
---
|
|
@@ -137,8 +137,8 @@ validator-system
|
|
|
137
137
|
## アノテーション欠落の対処
|
|
138
138
|
|
|
139
139
|
マップ生成後、`@unit`/`@layer` が欠落しているファイルが検出された場合:
|
|
140
|
-
1.
|
|
141
|
-
2.
|
|
140
|
+
1. Lintルール違反(require-unit-comment / require-layer-comment)として報告
|
|
141
|
+
2. 欠落ファイル一覧を出力し、アノテーション追加を促す
|
|
142
142
|
|
|
143
143
|
---
|
|
144
144
|
|
|
@@ -146,6 +146,6 @@ validator-system
|
|
|
146
146
|
|
|
147
147
|
| スキル/コマンド | 用途 |
|
|
148
148
|
|--------------|------|
|
|
149
|
-
| `
|
|
149
|
+
| `npx phasegate lint` | L1 archgateルールの全体スキャン |
|
|
150
150
|
| `consistency-checker` | マップ生成後の設計文書整合性確認 |
|
|
151
151
|
| `doc-freshness-checker` | マップと設計文書の鮮度を合わせて確認 |
|
|
@@ -176,55 +176,18 @@ git diff HEAD~1
|
|
|
176
176
|
git diff --name-only HEAD~1
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
-
#### Step B.1: Tier 1 —
|
|
179
|
+
#### Step B.1: Tier 1 — 機械的チェック
|
|
180
180
|
|
|
181
|
-
Claude Codeがgrep
|
|
182
|
-
|
|
183
|
-
| ID | 次元 | 検証方法 | 重大度 |
|
|
184
|
-
|----|------|---------|--------|
|
|
185
|
-
| C1 | スコープ遵守 | `git diff --name-only` と指示ファイルリストの差分比較 | BLOCK |
|
|
186
|
-
| C2 | 既存破壊なし | `pnpm test` 実行(既存テスト全パス確認) | BLOCK |
|
|
187
|
-
| C3 | 命名一貫性 | grep: 日本語テスト名、`actual`変数、target/context構造 | BLOCK |
|
|
188
|
-
| IM3 | レイヤー違反なし | grep: domain層ファイルからinfrastructure層へのimport検出 | BLOCK |
|
|
189
|
-
| IM4 | 型安全性 | grep: 正当理由なき `any` / `as` の使用検出 | WARN |
|
|
190
|
-
| TE1 | ケースID突合 | 設計文書のケースIDリスト vs テストファイル内のID(diff抽出) | BLOCK |
|
|
191
|
-
| DP3 | 配置ルール準拠 | `git diff --name-only` とfolder_management_rules.mdのパス照合 | BLOCK |
|
|
192
|
-
|
|
193
|
-
**Tier 1 判定**:
|
|
194
|
-
```
|
|
195
|
-
BLOCK が1つでもFAIL → REJECT(Tier 2スキップ)→ Step Cへ
|
|
196
|
-
全PASS or WARNのみ → Tier 2へ進む
|
|
197
|
-
```
|
|
181
|
+
Claude Codeがgrep・スクリプトで自動検証する。共通次元(C1-C3: スコープ遵守・既存破壊なし・命名一貫性)+ タスクタイプ別次元(IM3/IM4, TE1/TE4, DP3)を適用。BLOCKが1つでもFAILならTier 2スキップで即REJECT。次元ID・検証方法の詳細は [references/review-dimensions.md](references/review-dimensions.md) の Tier 1 セクションを参照。
|
|
198
182
|
|
|
199
183
|
#### Step B.2: Tier 2 — Sonnetによる設計突合チェック
|
|
200
184
|
|
|
201
|
-
Agent tool
|
|
202
|
-
|
|
203
|
-
**Tier 2への入力(これだけ)**:
|
|
185
|
+
Agent tool経由でSonnetに以下の**最小限の入力**を渡す:
|
|
204
186
|
1. `git diff HEAD~1` の出力(変更差分のみ)
|
|
205
187
|
2. Tier 1の結果サマリ(PASS/WARN一覧)
|
|
206
188
|
3. 設計文書の**該当箇所の抜粋**(全文ではない)
|
|
207
189
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
| ID | 次元 | 検証内容 | 重大度 |
|
|
211
|
-
|----|------|---------|--------|
|
|
212
|
-
| C4 | 完了度 | 指示項目の欠落がないか | BLOCK |
|
|
213
|
-
| DD1 | 計画との整合 | diffの内容が設計文書の方針と矛盾しないか | BLOCK |
|
|
214
|
-
| DD2 | アーキテクチャ原則 | ヘキサゴナル・DDD原則に沿っているか | BLOCK |
|
|
215
|
-
| DD4/IM-Y | YAGNI | 指示範囲外の「改善」「リファクタ」「将来への備え」がないか | BLOCK |
|
|
216
|
-
| IM5 | DRY | 新規コードに既存コードとの重複がないか | WARN |
|
|
217
|
-
| TE2 | 期待値突合 | Assertionの期待値が設計文書の期待結果と一致するか | BLOCK |
|
|
218
|
-
| DD3 | トレーサビリティ | 各要素がストーリー/Unit要件に紐づいているか | WARN |
|
|
219
|
-
|
|
220
|
-
詳細は [references/review-dimensions.md](references/review-dimensions.md) を参照。
|
|
221
|
-
|
|
222
|
-
**Tier 2 判定**:
|
|
223
|
-
```
|
|
224
|
-
BLOCK が1つでもFAIL → REJECT → Step Cへ
|
|
225
|
-
WARN のみ FAIL → CONDITIONAL_PASS(WARNをまとめて修正)
|
|
226
|
-
全PASS → PASS(完了)
|
|
227
|
-
```
|
|
190
|
+
設計との整合(DD1/DD2)、YAGNI(DD4/IM-Y)、完了度(C4)、期待値突合(TE2)等を検証。BLOCKが1つでもFAILならREJECT、WARNのみならCONDITIONAL_PASS。次元ID・検証内容・判定ロジックの詳細は [references/review-dimensions.md](references/review-dimensions.md) の Tier 2 セクションを参照。
|
|
228
191
|
|
|
229
192
|
### Step C: 修正ループ(Fix Loop)
|
|
230
193
|
|
|
@@ -238,21 +201,7 @@ WARN のみ FAIL → CONDITIONAL_PASS(WARNをまとめて修正)
|
|
|
238
201
|
|
|
239
202
|
#### 修正指示の構造(codex再委任時)
|
|
240
203
|
|
|
241
|
-
|
|
242
|
-
## 修正指示(Round N)
|
|
243
|
-
|
|
244
|
-
### 前回レビュー結果
|
|
245
|
-
- FAIL次元: {ID}: {名前}
|
|
246
|
-
|
|
247
|
-
### 修正箇所
|
|
248
|
-
#### [{次元ID}] {ファイルパス}:{行番号}
|
|
249
|
-
- 現状: {問題の具体的記述}
|
|
250
|
-
- 期待: {あるべき状態}
|
|
251
|
-
- 修正方法: {具体的手順}
|
|
252
|
-
|
|
253
|
-
### 制約
|
|
254
|
-
- 修正対象以外のコードに手を加えないこと
|
|
255
|
-
```
|
|
204
|
+
修正指示テンプレート(Round N形式: FAIL次元・修正箇所・制約)は [references/prompt-patterns.md](references/prompt-patterns.md) の「修正指示テンプレート」セクションを参照。
|
|
256
205
|
|
|
257
206
|
#### エスカレーション条件
|
|
258
207
|
|