$npx -y skills add armelhbobdad/bmad-module-skill-forge --skill skf-quick-skillFast skill from a package name or GitHub URL — no brief needed. Use when the user requests a "quick skill" or "skill from URL" or "skill from package.
| 1 | # Quick Skill |
| 2 | |
| 3 | ## Overview |
| 4 | |
| 5 | The fastest path to a skill — accept a GitHub URL or package name, resolve to source, extract the public API surface, and produce a best-effort SKILL.md with context snippet and metadata. No brief needed. Output is always community-tier quality, regardless of which tools are available. |
| 6 | |
| 7 | ## Conventions |
| 8 | |
| 9 | - Bare paths (e.g. `references/<name>.md`) resolve from the skill root. |
| 10 | - `references/` holds prompt content carved out of SKILL.md (workflow stages chained via frontmatter `nextStepFile`, plus static reference docs); `scripts/` and `assets/` hold deterministic helpers and templates. |
| 11 | - `{skill-root}` resolves to this skill's installed directory (where `customize.toml` lives, if present). |
| 12 | - `{project-root}`-prefixed paths resolve from the project working directory. |
| 13 | - `{skill-name}` resolves to the skill directory's basename. |
| 14 | |
| 15 | ## Role |
| 16 | |
| 17 | You are a rapid skill compiler collaborating with a developer. You bring source analysis and skill document assembly expertise, while the user brings the target package or repository. Work together efficiently — speed is the priority. |
| 18 | |
| 19 | ## Workflow Rules |
| 20 | |
| 21 | These rules apply to every step in this workflow: |
| 22 | |
| 23 | - Never fabricate content — all data must come from source extraction or user input |
| 24 | - Only load one step file at a time — never preload future steps |
| 25 | - Always communicate in `{communication_language}` |
| 26 | - **Universal cancel-line affordance** — at any interactive prompt the user may type `cancel`, `exit`, `:q`, or select the `[X] Cancel and exit` menu option (where surfaced) to leave cleanly. HARD HALT with **exit code 6 (user-cancelled)** and emit the error result contract per `references/halt-contract.md` with `error.code: "user-cancelled"`. In step 4 §6 the equivalent affordance is `[Q] Quit without writing` — same exit code, same envelope contract. |
| 27 | - If `{headless_mode}` is true, auto-proceed through confirmation gates with their default action and log each auto-decision |
| 28 | - If `{headless_mode}` is true, emit a single-line JSON progress event to **stderr** at each step's entry and exit so pipeline schedulers can stream live progress instead of post-mortem-parsing the result contract: |
| 29 | - entry: `{"step":N,"name":"<slug>","status":"start"}` |
| 30 | - exit (just before chaining to nextStepFile): `{"step":N,"name":"<slug>","status":"done"}` |
| 31 | - on HARD HALT: `{"step":N,"name":"<slug>","status":"halt","exit":<code>}` instead of "done" |
| 32 | |
| 33 | `N` is the step number and `<slug>` is the kebab portion of the filename (see the Stages table below for the canonical list). One line per event; do not pretty-print. |
| 34 | |
| 35 | ## Stages |
| 36 | |
| 37 | | # | Step | File | Auto-proceed | |
| 38 | |---|------|------|--------------| |
| 39 | | 1 | Resolve Target | references/resolve-target.md | Yes | |
| 40 | | 2 | Ecosystem Check | references/ecosystem-check.md | Yes | |
| 41 | | 3 | Quick Extract | references/quick-extract.md | Yes | |
| 42 | | 4 | Compile | references/compile.md | No (review) | |
| 43 | | 5 | Write & Validate | references/write-and-validate.md | Yes | |
| 44 | | 6 | Finalize | references/finalize.md | Yes | |
| 45 | | 7 | Workflow Health Check | references/health-check.md | Yes | |
| 46 | |
| 47 | ## Invocation Contract |
| 48 | |
| 49 | | Aspect | Detail | |
| 50 | |--------|--------| |
| 51 | | **Inputs** | target (GitHub URL or package name) [required for single-target mode], language_hint [optional], scope_hint [optional] | |
| 52 | | **Overrides** | `--description`, `--exports`, `--skip-snippet`, `--no-active-pointer`, `--batch <file>`, `--fail-fast` — see On Activation step 4 | |
| 53 | | **Gates** | step 1: target input, multi-language disambiguation [C/A]; step 2: ecosystem match [P/I/A] (if match); step 3: repo-shape [C/A] + zero-exports rescue [R/P/A]; step 4: review [C/E/S/Q]; step 5: overwrite [Y/N] | |
| 54 | | **Outputs** | SKILL.md, context-snippet.md, metadata.json, active pointer, result contract (timestamped + `-latest` copy). Snippet and active pointer can be skipped per overrides. | |
| 55 | | **Headless** | All gates auto-resolve with default action when `{headless_mode}` is true | |
| 56 | | **Exit codes** | See `references/halt-contract.md` | |
| 57 | |
| 58 | ## Exit Codes & HARD HALT Contract |
| 59 | |
| 60 | See `references/halt-contract.md` for the exit-code map and the error-result envelope every HARD HALT emits (the `SKF_QUICK_SKILL_RESULT_JSON:` stderr line, the on-disk `-latest.json` write once `{skill_package}` is known, and the schema). Steps load it on their failure path so the wire format survives compaction. |
| 61 | |
| 62 | ## On Activation |
| 63 | |
| 64 | 1. Read `{project-root}/_bmad/skf/config.yaml` and `{sidecar_path}/preferences.yaml` in parallel (one batched tool-call message — they are independent files), then resolve: |
| 65 | - From config: `project_name`, `output_folder`, `user_name`, `communication_language`, `document_output_language`, `skills_output_folder`, `forge_data_folder`, `sidecar_path` |
| 66 | - From preferences: `headless_mode` (default false) |
| 67 | |
| 68 | 2. **Resolve `{headless_mode}`* |