readProjectFile('tools/codex-skills/core-guardrails/SKILL.md'); $this->assertStringContainsString('name: core-guardrails', $skill); $this->assertStringContainsString('MUST', $skill); $this->assertStringContainsString('MUST NOT', $skill); $this->assertStringContainsString('Out of Scope', $skill); $this->readProjectFile('tools/codex-skills/core-guardrails/references/boundaries-core.md'); $this->readProjectFile('tools/codex-skills/core-guardrails/references/boundaries-ui.md'); $this->readProjectFile('tools/codex-skills/core-guardrails/references/quality-gates.md'); $this->readProjectFile('tools/codex-skills/core-guardrails/references/source-map.md'); } public function testStarterkitPlannerSkillContainsDecisionCompleteTemplateContract(): void { $skill = $this->readProjectFile('tools/codex-skills/starterkit-planner/SKILL.md'); $this->assertStringContainsString('name: starterkit-planner', $skill); $this->assertStringContainsString('Decision-complete Implementierungsplan', $skill); $this->readProjectFile('tools/codex-skills/starterkit-planner/references/plan-template.md'); $this->readProjectFile('tools/codex-skills/starterkit-planner/references/tradeoff-matrix.md'); } public function testCodexPromptsDocumentationReferencesBothSkillsAndExtensionScope(): void { $prompts = $this->readProjectFile('docs/codex-prompts.md'); $this->assertStringContainsString('core-guardrails', $prompts); $this->assertStringContainsString('starterkit-planner', $prompts); $this->assertStringContainsString('Out of Scope: Extensions', $prompts); } public function testDocsIndexReferencesCodexPrompts(): void { $index = $this->readProjectFile('docs/index.md'); $this->assertStringContainsString('/docs/codex-prompts.md', $index); } public function testCodexSkillsSyncScriptSupportsCheckAndApply(): void { $script = $this->readProjectFile('bin/codex-skills-sync.sh'); $this->assertStringContainsString('--check', $script); $this->assertStringContainsString('--apply', $script); $this->assertStringContainsString('mode="check"', $script); $this->assertStringContainsString('core-guardrails', $script); $this->assertStringContainsString('starterkit-planner', $script); } }