[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6X0GP3CREDSPHTVGGAK5R1H":3,"skill-same:01M6X0GP3CREDSPHTVGGAK5R1H":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6X0GP3CREDSPHTVGGAK5R1H","run-vulcan",null,"Drive a complete VULCAN run from a conversation — take tool schemas or an existing catalog, build the simulated environment, review it, construct the tool dependency graph, generate and judge trajectories, and export the training set. Use when someone wants to generate tool-calling training data and does not want to run the stages by hand.","microsoft\u002Fvulcan","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6X0G4SHVFPBQNK608VH9AQT",7,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvulcan\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frun-vulcan\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"run vulcan","run","vulcan","build","when","Existing","hand","trajectories","complete","calling","conversation","review","dependency graph","use","catalog","environment","tool","SET","generate","training","2026-11-10 10:12:30",false,"---\nname: run-vulcan\ndescription: Drive a complete VULCAN run from a conversation — take tool schemas or an existing catalog, build the simulated environment, review it, construct the tool dependency graph, generate and judge trajectories, and export the training set. Use when someone wants to generate tool-calling training data and does not want to run the stages by hand.\n---\n\n# Run VULCAN end to end\n\nThe entry point. Someone has tool schemas and wants training data; this takes them the whole\nway, stopping only where a decision or money is at stake.\n\nYou are driving a pipeline that **spends real money on someone else's API key**. The single\nmost useful thing you do is refuse to spend it on a broken environment. `build_graph` alone\ncosts *n·(n−1)* model calls for *n* tools: 56 at 8 tools, 462 at 22, 1892 at 44. Reviewing\nbefore that gate is the whole reason this skill is shaped the way it is.\n\n## Step 0 — find out where they are\n\nDo not assume. Ask, or look:\n\n| They have | Start at |\n|-|-|\n| tool schemas in any shape, no catalog | [Phase 1](#phase-1--catalog-and-environment) |\n| a catalog already in VULCAN's format | [Phase 1](#phase-1--catalog-and-environment), skipping the conversion |\n| a finished environment (`outputs\u002F\u003Cenv>\u002F\u003Ccat>\u002Fdebug_environment\u002F`) | [Phase 2](#phase-2--the-tool-dependency-graph) after a review |\n| a graph and sequences | [Phase 3](#phase-3--training-data) |\n| a run that went wrong | diagnose first: read `logs\u002F\u003Ccategory>\u002F\u003Cstep>.log` and check `llm_calls=` |\n\nCheck what exists rather than trusting a description:\n\n```bash\nls configs\u002F examples\u002F\nls outputs\u002F*\u002F*\u002F 2>\u002Fdev\u002Fnull | head -30\n```\n\nConfirm before anything else: **which provider and model**, and that the key is set. Every\nstage calls a model, and a missing key produces a run that reports success with\n`llm_calls=0` at every stage rather than failing.\n\n```bash\npython -c \"import os; print({k: bool(os.getenv(k)) for k in ('OPENAI_API_KEY','ANTHROPIC_API_KEY','GEMINI_API_KEY')})\"\n```\n\n## Phase 1 — catalog and environment\n\nInvoke the **`simulate-environment`** skill. It covers three things: converting whatever\nschemas they have into a valid catalog, running steps 1 to 6, and reviewing the result.\n\nDo not skip the review. `environment_ready` is set by tests a model wrote from the same\nspecs that produced the class, so it agrees with the class's own mistakes. The review is\nwhat catches a tool that never writes the state it claims to change, a seed state no tool\ncan find anything in, or an argument the implementation ignores.\n\n**Stop here and report** if the review finds anything material. Say what it costs\ndownstream and offer the cheapest fix — `generate_states` to reseed is far cheaper than\nregenerating tools. Let them decide before you spend graph money.\n\n## Phase 2 — the tool dependency graph\n\nInvoke the **`build-tool-graph`** skill.\n\n**Before running it, state the cost and get agreement.** Count the tools, multiply, and say\nthe number out loud:\n\n```bash\npython -c \"\nimport json,sys\nrows=[json.loads(l) for l in open(sys.argv[1]) if l.strip()]\nn=sum(len(r.get('api_list',[])) for r in rows)\nprint(f'{n} tools -> {n*(n-1)} model calls for build_graph alone')\n\" outputs\u002F\u003Cenv>\u002F\u003Ccategory>\u002Fenv_grouped\u002Fsuccess.jsonl\n```\n\nThis is the point of no return for the budget. If the number is larger than they expect,\noffer to cut the catalog or point `steps.build_graph.model` at a cheaper model before\nproceeding. Do not run it and apologise afterwards.\n\n## Phase 3 — training data\n\nInvoke the **`generate-training-data`** skill: states, argument samples, chain execution,\nqueries, trajectories, judging, export.\n\n`generate_trajectories` is the second-largest line item — one conversation per sequence,\nseveral turns each, plus a simulated user and a judge for the `with_user*` types. Say so\nbefore starting it.\n\n## Step 4 — report\n\nOne funnel, so attrition is visible where it happens:\n\n```\ntools → graph edges → sequences → chains executed → queries → trajectories → judged → exported\n```\n\nThen: where the dataset is, how many records, and what it cost. Take the cost from\n`llm_calls=` in the stage logs, not from your estimate.\n\nFlag anything that looks wrong rather than presenting a number that happens to be non-zero.\nThe failure that matters most is a stage reporting success with `llm_calls=0` — steps catch\nper-item errors and emit the row anyway, so rows can exist that are just input passed\nthrough untouched.\n\n## Rules\n\n- **Never start a phase that costs money without saying what it will cost.** Estimate first,\n  in the message before you run it, not in the same message.\n- **Never skip the environment review to save time.** It is the cheapest step and it gates\n  the most expensive one.\n- **Report `llm_calls=`, not row counts,** when asked whether a stage worked.\n- **Re-running is cheap; regenerating is not.** Runs resume on each item's input hash, so a\n  re-run skips completed work. Changing a model or temperature does *not* invalidate it —\n  only deleting a stage's output directory does.\n- **Do not run `score_sequences`.** It is deprecated, analysis only, and nothing downstream\n  reads it. A bare `--pipeline` includes it; the ranges in these skills do not.\n- **VULCAN executes model-written Python with no sandbox.** If the user is on a machine\n  that holds anything they care about, say so before the first run rather than after.\n","# Run VULCAN end to end\n\nThe entry point. Someone has tool schemas and wants training data; this takes them the whole\nway, stopping only where a decision or money is at stake.\n\nYou are driving a pipeline that **spends real money on someone else's API key**. The single\nmost useful thing you do is refuse to spend it on a broken environment. `build_graph` alone\ncosts *n·(n−1)* model calls for *n* tools: 56 at 8 tools, 462 at 22, 1892 at 44. Reviewing\nbefore that gate is the whole reason this skill is shaped the way it is.\n\n## Step 0 — find out where they are\n\nDo not assume. Ask, or look:\n\n| They have | Start at |\n|-|-|\n| tool schemas in any shape, no catalog | [Phase 1](#phase-1--catalog-and-environment) |\n| a catalog already in VULCAN's format | [Phase 1](#phase-1--catalog-and-environment), skipping the conversion |\n| a finished environment (`outputs\u002F\u003Cenv>\u002F\u003Ccat>\u002Fdebug_environment\u002F`) | [Phase 2](#phase-2--the-tool-dependency-graph) after a review |\n| a graph and sequences | [Phase 3](#phase-3--training-data) |\n| a run that went wrong | diagnose first: read `logs\u002F\u003Ccategory>\u002F\u003Cstep>.log` and check `llm_calls=` |\n\nCheck what exists rather than trusting a description:\n\n```bash\nls configs\u002F examples\u002F\nls outputs\u002F*\u002F*\u002F 2>\u002Fdev\u002Fnull | head -30\n```\n\nConfirm before anything else: **which provider and model**, and that the key is set. Every\nstage calls a model, and a missing key produces a run that reports success with\n`llm_calls=0` at every stage rather than failing.\n\n```bash\npython -c \"import os; print({k: bool(os.getenv(k)) for k in ('OPENAI_API_KEY','ANTHROPIC_API_KEY','GEMINI_API_KEY')})\"\n```\n\n## Phase 1 — catalog and environment\n\nInvoke the **`simulate-environment`** skill. It covers three things: converting whatever\nschemas they have into a valid catalog, running steps 1 to 6, and reviewing the result.\n\nDo not skip the review. `environment_ready` is set by tests a model wrote from the same\nspecs that produced the class, so it agrees with the class's own mistakes. The review is\nwhat catches a tool that never writes the state it claims to change, a seed state no tool\ncan find anything in, or an argument the implementation ignores.\n\n**Stop here and report** if the review finds anything material. Say what it costs\ndownstream and offer the cheapest fix — `generate_states` to reseed is far cheaper than\nregenerating tools. Let them decide before you spend graph money.\n\n## Phase 2 — the tool dependency graph\n\nInvoke the **`build-tool-graph`** skill.\n\n**Before running it, state the cost and get agreement.** Count the tools, multiply, and say\nthe number out loud:\n\n```bash\npython -c \"\nimport json,sys\nrows=[json.loads(l) for l in open(sys.argv[1]) if l.strip()]\nn=sum(len(r.get('api_list',[])) for r in rows)\nprint(f'{n} tools -> {n*(n-1)} model calls for build_graph alone')\n\" outputs\u002F\u003Cenv>\u002F\u003Ccategory>\u002Fenv_grouped\u002Fsuccess.jsonl\n```\n\nThis is the point of no return for the budget. If the number is larger than they expect,\noffer to cut the catalog or point `steps.build_graph.model` at a cheaper model before\nproceeding. Do not run it and apologise afterwards.\n\n## Phase 3 — training data\n\nInvoke the **`generate-training-data`** skill: states, argument samples, chain execution,\nqueries, trajectories, judging, export.\n\n`generate_trajectories` is the second-largest line item — one conversation per sequence,\nseveral turns each, plus a simulated user and a judge for the `with_user*` types. Say so\nbefore starting it.\n\n## Step 4 — report\n\nOne funnel, so attrition is visible where it happens:\n\n```\ntools → graph edges → sequences → chains executed → queries → trajectories → judged → exported\n```\n\nThen: where the dataset is, how many records, and what it cost. Take the cost from\n`llm_calls=` in the stage logs, not from your estimate.\n\nFlag anything that looks wrong rather than presenting a number that happens to be non-zero.\nThe failure that matters most is a stage reporting success with `llm_calls=0` — steps catch\nper-item errors and emit the row anyway, so rows can exist that are just input passed\nthrough untouched.\n\n## Rules\n\n- **Never start a phase that costs money without saying what it will cost.** Estimate first,\n  in the message before you run it, not in the same message.\n- **Never skip the environment review to save time.** It is the cheapest step and it gates\n  the most expensive one.\n- **Report `llm_calls=`, not row counts,** when asked whether a stage worked.\n- **Re-running is cheap; regenerating is not.** Runs resume on each item's input hash, so a\n  re-run skips completed work. Changing a model or temperature does *not* invalidate it —\n  only deleting a stage's output directory does.\n- **Do not run `score_sequences`.** It is deprecated, analysis only, and nothing downstream\n  reads it. A bare `--pipeline` includes it; the ranges in these skills do not.\n- **VULCAN executes model-written Python with no sandbox.** If the user is on a machine\n  that holds anything they care about, say so before the first run rather than after.\n",{"name":5,"description":7},"main","9449cc34c0b30d72fab19d05bc7c37e94f54c3aa",".claude\u002Fskills\u002Frun-vulcan",2,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvulcan","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-10-27 04:26:42",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add microsoft\u002Fvulcan --skill run-vulcan",{"tool":59,"command":60},"bunx","bunx skills add microsoft\u002Fvulcan --skill run-vulcan",{"tool":62,"command":63},"pnpm","pnpm dlx skills add microsoft\u002Fvulcan --skill run-vulcan","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvulcan\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Frun-vulcan\u002FSKILL.md",true,[],[68,88,107],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":39},"01M6X0GY8XDSY0NSND2XQH2RCA","simulate-environment","Build a VULCAN input catalog from tool schemas a user shares, run the environment-simulation phase, and review the generated environment class for state\u002Fbehaviour mismatches, unusable initial states, arguments with no effect, non-determinism, and missing tool coverage. Use when starting from raw tool schemas, or after debug_environment on an existing run.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvulcan\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fsimulate-environment\u002FSKILL.md",[],[75,76,34,77,30,78,79,80,35,81,82,33,32,83,84,85,86,24,87,23],"simulate environment","simulate","generated","debug","state","simulation","effect","coverage","missing","states","with","for","phase",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":39},"01M6X0GFGN9A5H5EKTGV5Q071M","generate-training-data","Run VULCAN's task-generation and trajectory phases — initial states, argument samples, chain execution, user queries, trajectories, judging, and dataset export — and verify every stage wrote to its documented path with the documented record shape. Use after the tool dependency graph exists.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvulcan\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fgenerate-training-data\u002FSKILL.md",[],[95,96,97,37,38,85,98,84,26,99,35,32,31,100,101,102,103,104,105,106],"generate training data","generate training","data","argument","execution","queries","task","record","stage","dataset","chain","trajectory",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":39},"01M6X0G7CCSTFNBD8P0M331J03","build-tool-graph","Run VULCAN's graph-construction phase correctly — build_graph and plan_sequences — with a cost estimate before you start and a check afterwards that the graph is actually usable. Use when building the tool dependency graph for a category, or when plan_sequences produced no sequences.","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fvulcan\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fbuild-tool-graph\u002FSKILL.md",[],[114,115,22,35,116,117,118,20,32,85,119,120,86,121,21,23,122,31,123,124],"graph","build tool graph","build tool","plan","start","you","cost estimate","estimate","sequences","cost","dependency"]