Scenario Skill Author and manage holdout scenarios for behavioral validation. Scenarios define what the system should do in narrative form, with measurable acceptance vectors and satisfaction scoring. They live in so implementing agents cannot see them during development. Quick Start Execution Steps Step 1: Initialize Holdout Directory Creates with a explaining holdout isolation rules. If the directory already exists, this is a no-op. The README makes clear: - Implementing agents MUST NOT read - Only evaluator agents and humans should author scenarios - Hook enforcement prevents implementing…

\"\ncheck \"SKILL.md has name: scenario\" \"grep -q '^name: scenario' '$SKILL_DIR/SKILL.md'\"\ncheck \"SKILL.md references holdout directory\" \"grep -q '\\\\.agents/holdout' '$SKILL_DIR/SKILL.md'\"\ncheck \"SKILL.md mentions behavioral validation\" \"grep -qi 'behavioral' '$SKILL_DIR/SKILL.md'\"\n\necho \"\"; echo \"Results: $PASS passed, $FAIL failed\"\n[ $FAIL -eq 0 ] && exit 0 || exit 1\n","content_type":"application/x-sh; charset=utf-8","language":"bash","size":728,"content_sha256":"33975ad326a70a7cced8ad10af0f1296f952bc49816eec23b8320b29eb3cd802"}],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"Scenario Skill","type":"text"}]},{"type":"paragraph","content":[{"text":"Author and manage holdout scenarios for behavioral validation. Scenarios define ","type":"text"},{"text":"what","type":"text","marks":[{"type":"strong"}]},{"text":" the system should do in narrative form, with measurable acceptance vectors and satisfaction scoring. They live in ","type":"text"},{"text":".agents/holdout/","type":"text","marks":[{"type":"code_inline"}]},{"text":" so implementing agents cannot see them during development.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Quick Start","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Initialize holdout directory\n/scenario init\n\n# Add a scenario from a description\n/scenario add \"user can authenticate with valid credentials\"\n\n# List all active scenarios\n/scenario list\n\n# Validate scenarios against the schema\n/scenario validate","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Execution Steps","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 1: Initialize Holdout Directory","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao scenario init","type":"text"}]},{"type":"paragraph","content":[{"text":"Creates ","type":"text"},{"text":".agents/holdout/","type":"text","marks":[{"type":"code_inline"}]},{"text":" with a ","type":"text"},{"text":"README.md","type":"text","marks":[{"type":"code_inline"}]},{"text":" explaining holdout isolation rules. If the directory already exists, this is a no-op.","type":"text"}]},{"type":"paragraph","content":[{"text":"The README makes clear:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Implementing agents MUST NOT read ","type":"text"},{"text":".agents/holdout/","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Only evaluator agents and humans should author scenarios","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Hook enforcement prevents implementing agents from accessing holdout files","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 2: Author Scenarios","type":"text"}]},{"type":"paragraph","content":[{"text":"Provide a narrative description and the skill generates a schema-compliant JSON scenario file.","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao scenario add \"user can authenticate with valid credentials\"","type":"text"}]},{"type":"paragraph","content":[{"text":"The skill will:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Generate an ID (","type":"text"},{"text":"s-YYYY-MM-DD-NNN","type":"text","marks":[{"type":"code_inline"}]},{"text":")","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Prompt for or infer the narrative, expected outcome, and acceptance vectors","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Set default satisfaction threshold (0.8)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Write to ","type":"text"},{"text":".agents/holdout/s-YYYY-MM-DD-NNN.json","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"paragraph","content":[{"text":"You can also author scenarios manually by writing JSON that conforms to ","type":"text"},{"text":"schemas/scenario.v1.schema.json","type":"text","marks":[{"type":"code_inline"}]},{"text":". See ","type":"text"},{"text":"Scenario Schema Reference","type":"text","marks":[{"type":"link","attrs":{"href":"references/scenario-schema.md","title":null}}]},{"text":".","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 3: Validate Scenarios","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao scenario validate","type":"text"}]},{"type":"paragraph","content":[{"text":"Validates every ","type":"text"},{"text":".json","type":"text","marks":[{"type":"code_inline"}]},{"text":" file in ","type":"text"},{"text":".agents/holdout/","type":"text","marks":[{"type":"code_inline"}]},{"text":" against ","type":"text"},{"text":"schemas/scenario.v1.schema.json","type":"text","marks":[{"type":"code_inline"}]},{"text":". Reports:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Schema violations (missing fields, wrong types)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Duplicate IDs","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Stale scenarios (status = \"active\" but date > 90 days old)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Acceptance vectors with no check command","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 4: List Scenarios","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao scenario list","type":"text"}]},{"type":"paragraph","content":[{"text":"Displays all scenarios with:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ID, goal, status, source, date","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Satisfaction threshold","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Count of acceptance vectors","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Filter options:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"ao scenario list --status active\nao scenario list --status draft\nao scenario list --status retired","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Linking scenarios to GOALS.md directives","type":"text"}]},{"type":"paragraph","content":[{"text":"A scenario linked to a GOALS.md directive becomes part of the executable spec. ","type":"text"},{"text":"ao goals scenarios --create \"\u003cgoal>\" --directive N","type":"text","marks":[{"type":"code_inline"}]},{"text":" scaffolds a promoted spec scenario and links it bidirectionally; ","type":"text"},{"text":"ao goals scenarios","type":"text","marks":[{"type":"code_inline"}]},{"text":" lists each directive's linked scenarios; ","type":"text"},{"text":"ao goals scenarios --lint","type":"text","marks":[{"type":"code_inline"}]},{"text":" checks the link graph. Ad hoc holdout scenarios authored with ","type":"text"},{"text":"ao scenario add","type":"text","marks":[{"type":"code_inline"}]},{"text":" stay unlinked until promoted. See the ","type":"text"},{"text":"/goals","type":"text","marks":[{"type":"code_inline"}]},{"text":" skill and ","type":"text"},{"text":"docs/adr/ADR-0003","type":"text","marks":[{"type":"code_inline"}]},{"text":".","type":"text"}]},{"type":"paragraph","content":[{"text":"Once linked, a scenario's pass/fail feeds the directive's fitness: ","type":"text"},{"text":"ao goals measure","type":"text","marks":[{"type":"code_inline"}]},{"text":" rolls linked scenario results into a per-directive ","type":"text"},{"text":"scenario_satisfaction","type":"text","marks":[{"type":"code_inline"}]},{"text":" ratio (RED below threshold), and ","type":"text"},{"text":"ao goals trace","type":"text","marks":[{"type":"code_inline"}]},{"text":" renders the directive → scenario → bead → verdict → learning lineage and audits it for orphans. See the ","type":"text"},{"text":"/goals","type":"text","marks":[{"type":"code_inline"}]},{"text":" skill for both surfaces.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Step 5: Integration with Validation","type":"text"}]},{"type":"paragraph","content":[{"text":"Scenarios are consumed by ","type":"text"},{"text":"STEP 1.8","type":"text","marks":[{"type":"strong"}]},{"text":" in the ","type":"text"},{"text":"/validation","type":"text","marks":[{"type":"code_inline"}]},{"text":" skill. During validation, the evaluator agent:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Loads all active scenarios from ","type":"text"},{"text":".agents/holdout/","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Runs each acceptance vector's check command","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Computes a satisfaction score per scenario (0.0-1.0)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Aggregates into an overall holdout score","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Fails the validation gate if any scenario falls below its threshold","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Key Rules","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Holdout Isolation","type":"text"}]},{"type":"paragraph","content":[{"text":"Scenarios are ","type":"text"},{"text":"holdout data","type":"text","marks":[{"type":"strong"}]},{"text":". The implementing agent must never see them. This prevents the agent from overfitting to specific test cases instead of building correct general behavior.","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Scenarios live in ","type":"text"},{"text":".agents/holdout/","type":"text","marks":[{"type":"code_inline"}]},{"text":", which is outside the codebase","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"A hook enforces that implementing agents cannot read holdout files","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Only evaluator agents, humans, or the ","type":"text"},{"text":"/validation","type":"text","marks":[{"type":"code_inline"}]},{"text":" skill access scenarios","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Satisfaction Scoring","type":"text"}]},{"type":"paragraph","content":[{"text":"Scenarios use continuous satisfaction scoring (0.0-1.0), not boolean pass/fail. This enables:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Partial credit for incomplete implementations","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Trend tracking across iterations","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Threshold tuning per scenario based on criticality","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Each acceptance vector produces a score, and the scenario's overall score is the weighted average across all vectors.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Authorship Rules","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Scenarios should be written by ","type":"text"},{"text":"humans","type":"text","marks":[{"type":"strong"}]},{"text":" or by ","type":"text"},{"text":"evaluator agents","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"The implementing agent MUST NOT author its own scenarios","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"The ","type":"text"},{"text":"source","type":"text","marks":[{"type":"code_inline"}]},{"text":" field tracks provenance: ","type":"text"},{"text":"human","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"agent","type":"text","marks":[{"type":"code_inline"}]},{"text":", or ","type":"text"},{"text":"prod-telemetry","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"When an evaluator agent writes scenarios, it should operate in a separate session with no access to implementation details","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Scenario Lifecycle","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Status","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Meaning","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"active","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Scenario is evaluated during validation","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"retired","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Scenario passed consistently; kept for reference","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"blocked","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Scenario cannot be evaluated (missing dependency)","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"draft","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Scenario is incomplete; not yet evaluated","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Reference Documents","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Scenario Schema Reference","type":"text","marks":[{"type":"link","attrs":{"href":"references/scenario-schema.md","title":null}}]},{"text":" -- full field documentation and example JSON for the scenario schema","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"references/scenario.feature","type":"text","marks":[{"type":"link","attrs":{"href":"references/scenario.feature","title":null}}]},{"text":" — Executable spec: author holdout scenarios, schema-validate, list + link to GOALS directives, feed /validation (soc-qk4b)","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Troubleshooting","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Problem","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Cause","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Fix","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"validate","type":"text","marks":[{"type":"code_inline"}]},{"text":" reports missing fields","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Schema version mismatch","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check ","type":"text"},{"text":"version","type":"text","marks":[{"type":"code_inline"}]},{"text":" field matches schema expectation","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Scenario not picked up by validation","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Status is not ","type":"text"},{"text":"active","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Set ","type":"text"},{"text":"\"status\": \"active\"","type":"text","marks":[{"type":"code_inline"}]},{"text":" in the JSON","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Implementing agent read holdout","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Hook not installed","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Run ","type":"text"},{"text":"ao scenario init","type":"text","marks":[{"type":"code_inline"}]},{"text":" to verify hook setup","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Duplicate ID error","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Two scenarios share an ID","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Rename one using ","type":"text"},{"text":"s-YYYY-MM-DD-NNN","type":"text","marks":[{"type":"code_inline"}]},{"text":" format","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Stale scenario warning","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Active scenario older than 90 days","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Review and retire or refresh the scenario","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Score always 0.0","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Check command returns non-zero","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Debug the check command independently","type":"text"}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"See Also","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"/validation","type":"text","marks":[{"type":"code_inline"}]},{"text":" -- consumes scenarios at STEP 1.8 for holdout evaluation","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"/council","type":"text","marks":[{"type":"code_inline"}]},{"text":" -- multi-model review can generate scenario suggestions","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"/vibe","type":"text","marks":[{"type":"code_inline"}]},{"text":" -- code quality validation (complementary to behavioral scenarios)","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"scenario","author":"@skillopedia","source":{"stars":375,"repo_name":"agentops","origin_url":"https://github.com/boshu2/agentops/blob/HEAD/skills/scenario/SKILL.md","repo_owner":"boshu2","body_sha256":"ef5cb86691d37ed519d464226d047892ba6f220426aa0ef797af955180094d87","cluster_key":"f050c0312387c8875060808a35175801fe509900362171a87930ac0a4b3405ff","clean_bundle":{"format":"clean-skill-bundle-v1","source":"boshu2/agentops/skills/scenario/SKILL.md","attachments":[{"id":"02ace56c-303d-5460-bcff-dbb79f598479","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/02ace56c-303d-5460-bcff-dbb79f598479/attachment.md","path":"references/scenario-schema.md","size":3681,"sha256":"a7bb82a4971e353a6509b41d782c18efe77b06e73e266888829325e097012285","contentType":"text/markdown; charset=utf-8"},{"id":"d76482be-280b-5ccf-9800-0a00327d46bd","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/d76482be-280b-5ccf-9800-0a00327d46bd/attachment.feature","path":"references/scenario.feature","size":1597,"sha256":"4b0a61f727de480c1fbfc9c257dcbe63d1a749e8bedbaf25432cca882e2f41b7","contentType":"text/plain; charset=utf-8"},{"id":"0454fc6d-a888-53cf-95cd-14a543c38871","key":"uploads/10433ee7-ad12-4ae0-b34e-97553e46c6c8/0454fc6d-a888-53cf-95cd-14a543c38871/attachment.sh","path":"scripts/validate.sh","size":728,"sha256":"33975ad326a70a7cced8ad10af0f1296f952bc49816eec23b8320b29eb3cd802","contentType":"application/x-sh; charset=utf-8"}],"bundle_sha256":"35ce7b512d1a6cd13d99e1c7fd2748a18adf5d35279831e189f037c016a52e4b","attachment_count":3,"text_attachments":2,"attachment_storage":"skillopedia-attachments-v1","binary_attachments":1,"excluded_attachments":[]},"cluster_size":1,"skill_md_path":"skills/scenario/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"general","category_label":"General"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"general","consumes":[],"metadata":{"tier":"execution","stability":"experimental"},"produces":["result.json"],"practices":["property-based-testing","snapshot-testing","llm-eval-harness"],"import_tag":"clean-skills-v1","context_rel":[{"kind":"supplier-to","with":"validation"}],"description":"Manage holdout scenarios.","hexagonal_role":"supporting","output_contract":"Scenario artifacts in .agents/holdout/*.json","skill_api_version":1}},"renderedAt":1782980277231}

Scenario Skill Author and manage holdout scenarios for behavioral validation. Scenarios define what the system should do in narrative form, with measurable acceptance vectors and satisfaction scoring. They live in so implementing agents cannot see them during development. Quick Start Execution Steps Step 1: Initialize Holdout Directory Creates with a explaining holdout isolation rules. If the directory already exists, this is a no-op. The README makes clear: - Implementing agents MUST NOT read - Only evaluator agents and humans should author scenarios - Hook enforcement prevents implementing…