--- name: fskill-creator description: Create, maintain, or migrate functional skills; supports creating from a requirement brief and migrating an existing legacy skill directory into a functional skill structure. --- # fskill-creator ## Goal Unify the create and migrate lanes to produce a self-contained, reviewable, testable functional agent skill directory. The main skill handles routing, blueprint normalization, shared artifact generation, runtime capability provisioning, file writing, and validation; sub-skills only handle pre-analysis for their respective input forms. Use this skill when the user wants to "generate a functional skill", "create a functional skill", "add functions to an existing functional skill", or "migrate an existing legacy skill directory into a functional skill". ## Principles - The main `SKILL.md` only orchestrates the shared create / migrate / enhance / validate workflow. - Create and migrate are two pre-lanes; they must first converge into a unified `skill_blueprint`. - Function-specific behavior lives in `functions/*.md`; create / migrate specific pre-behavior lives in `sub-skills/*/functions/*.md`. - Shared vocabulary, policies, and schemas live in `references/*.md`. - Deterministic parsing, formatting, validation, and mechanical transforms live in `scripts/`. - Report, unit test, viewer, and testcase capabilities are maintained only once in the main skill, and vendored into the target skill by `add_runtime_capabilities`. - Preserve user-provided domain constraints; the migrate lane must also preserve legacy behavior evidence. - When the user has not approved direct modification, generated files should be treated as proposals. ## Sub-Skills | Sub-skill | When | Responsibility | Output | |---|---|---|---| | `sub-skills/create` | User provides a new skill brief or wants to enhance an existing functional skill | Normalize requirements, target path, inputs/outputs, constraints, and viewer choices | `create_context` | | `sub-skills/migrate` | User provides a legacy skill directory, monolithic skill content, or a migration request | Load the legacy skill package, identify behaviors that must be preserved, propose function boundaries and evidence | `migration_context` | Sub-skills do not directly write final target skill files. Their output must go through `normalize_skill_blueprint` before entering the shared artifact pipeline. ## References | Resource | Load Timing | Purpose | |---|---|---| | `shared_glossary` | On demand | Stable terminology and cross-lane field semantics. | | `script_rules` | Before designing or drafting scripts | Rules for deciding whether deterministic work belongs in `scripts/`. | | `sub-skills/create` | Create lane | Form `create_context` from user brief. | | `sub-skills/migrate` | Migrate lane | Form `migration_context` from a legacy skill directory. | ## External Inputs | Field | Source | Description | |---|---|---| | `task_mode` | user or derived | `create`, `migrate`, `enhance`, or `validate`; inferred by `resolve_task_mode` when absent. | | `skill_request` | user | Requirement description for creating or enhancing a skill. | | `legacy_skill_dir` | user or repository | Path to an existing legacy skill directory containing `SKILL.md` and optional companion files. | | `legacy_skill_path` | user or repository | Deprecated alias for `legacy_skill_dir`; may also be a direct path to `SKILL.md`, which resolves to its parent directory. | | `legacy_skill_content` | user | Legacy skill markdown provided when the path is inaccessible. | | `target_skill_path` | user or derived | Directory where the functional skill should live. | | `skill_name` | user or derived | Optional target skill name. | | `existing_skill_files` | repository | Optional existing functional skill files. | | `migration_constraints` | user | File names, tone, platform rules, or behaviors that must be preserved during migration. | | `known_testcases` | user or repository | Existing examples, traces, or expected behaviors. | | `existing_scripts` | repository | Helper scripts associated with the legacy skill. | | `include_report` | user | Whether to generate report log runtime in the target skill; defaults to `true`. | | `include_unittest` | user | Whether to generate unittest / testcase runner in the target skill; defaults to `true`. | | `script_runtime` | environment | Whether this skill's own Node.js scripts can be run. | | `report_mode` | user | `off`, `local`, or `remote`; defaults to `off`. | Viewers are generated following the capability flags: `tools/log_viewer.mjs` when `include_report=true`; `tools/tester_viewer.mjs` when `include_unittest=true`. ## Execution Pipeline | Step | Function | Purpose | Input | Output | |---:|---|---|---|---| | 1 | `resolve_task_mode` | Determine whether this request should go through create, migrate, enhance, or validate. | `task_mode`
`skill_request`
`legacy_skill_dir`
`legacy_skill_path`
`legacy_skill_content`
`existing_skill_files` | `task_context` | | 2A | `sub-skills/create::collect_create_brief` | Create/enhance lane: normalize user brief. | `skill_request`
`target_skill_path`
`skill_name` | `create_context` | | 2B | `sub-skills/migrate::load_legacy_skill` + `map_existing_behavior` + `propose_function_split` + `extract_shared_references` | Migrate lane: read the legacy skill package, extract behaviors and migration evidence. | `legacy_skill_dir`
`legacy_skill_path`
`legacy_skill_content`
`migration_constraints`
`include_report`
`include_unittest`
`script_runtime` | `migration_context` | | 3 | `normalize_skill_blueprint` | Converge create / migrate / enhance inputs into a unified blueprint. | `task_context`
`create_context`
`migration_context`
`target_skill_path`
`include_report`
`include_unittest` | `skill_blueprint` | | 4 | `design_skill_structure` | Design function pipeline, references, scripts, testcases, and file layout based on blueprint. | `skill_blueprint`
`existing_skill_files`
`script_rules` | `skill_structure`
`script_plan`
`tool_plan` | | 5 | `draft_skill_artifacts` | Draft `SKILL.md`, function contracts, references, script specs, and testcase suggestions. | `skill_blueprint`
`skill_structure`
`script_plan` | `skill_artifacts` | | 6 | `add_runtime_capabilities` | Provision report log, runtime wrapper, unit testcase runner, viewer, and smoke tests according to include flags. | `skill_blueprint.include_report`
`skill_blueprint.include_unittest`
`skill_artifacts` | `runtime_artifacts`
`skill_artifacts` | | 7 | `assemble_skill_files` | Generate or update target skill directory files. | `target_skill_path`
`skill_structure`
`skill_artifacts`
`runtime_artifacts`
`script_runtime` | `file_plan`
`created_files`
`updated_files` | | 8 | `validate_skill` | Validate functional-skill structure, runtime capabilities, testcases, and migration behavior preservation. | `target_skill_path`
`file_plan`
`skill_blueprint`
`report_mode` | `validation_result` | ## Output Scope This skill may read legacy skills and create or modify functional skill files under `target_skill_path`. Do not delete the original legacy skill unless the user explicitly requests deletion; do not modify unrelated repository files unless the user explicitly requests project-level integration.