Releases: armelhbobdad/bmad-module-skill-forge
Releases · armelhbobdad/bmad-module-skill-forge
Release list
Skill Forge (SKF) v2.0.0
What's New
New Features
- feat(campaign): campaign workflow scaffolding + state schema
- feat(campaign): campaign setup + campaign-brief.yaml (Stage 0)
- feat(campaign): strategy generation + provenance (Stages 1 + 3)
- feat(campaign): pin validation (Stage 2)
- feat(campaign): dependency tracking + enforcement
- feat(campaign): per-skill loop + kickoff emitter (Stage 4)
- feat(campaign): tier B batch + capstone (Stages 5-6)
- feat(campaign): verification + refinement (Stages 7-8)
- feat(campaign): export + maintenance + campaign report (Stages 9-10)
- feat(campaign): campaign resume
- feat(campaign): standing directive
- feat(campaign): onboard removal + v2.0 documentation
- feat(campaign): persist capstone, verification and refinement outcomes to state
- feat(setup): recommend deepwiki as the zero-ceremony first step
- feat(installer): point first-run users at deepwiki after install
- feat(analyze-source): codify the decomposition merge-vs-split decision
- feat(shape-detect): accept optional grammar-file and tree-path signals
- feat(shape-detect): classify whole-language repos by their grammar file
- feat(shape-detect): detect hand-written compilers from tree structure
- feat(shape-detect): classify Go repositories from go.mod
- feat(analyze-source): harvest grammar and compiler-tree signals for scoping
- feat(shared): add curated language-to-corpora registry
- feat(analyze-source): seed whole-language skills with companion prose corpora
- feat(analyze-source): record honest caveat for whole-language skills
- feat(brief): carry per-corpus provenance through doc_urls
- feat(brief): suppress non-corpus README noise for whole-language references
- feat(shape-detect): classify Maven, Gradle, and Swift repositories
- feat(create-skill): foreground language prose for whole-language references
- feat(module-help): register skf-campaign in the menu CSV
- feat(campaign): harden orchestration — scripted state, customization, headless front door, recovery
Bug Fixes
- fix(analyze-source): use the deterministic manifest scanner in auto-scope
- fix(analyze-source): handle remote URLs in auto-scope manifest scan
- fix(scripts): invoke PEP-723 helpers via
uv run <script>, notuv run python - fix(shape-detect): stop monorepo non-product members forcing reference-app
- fix(shape-detect): classify parser/grammar tools by their own name
- fix(detect-docs): widen doc-URL recall to doc. subdomains and language paths
- fix(brief): normalize URLs when merging detected and seeded doc corpora
- fix(campaign): use bare _bmad/custom path form so validate:refs resolves
- fix(skf): close installed-mode wiring, halt-contract, and customization gaps across SKF workflows
- fix(shared): resolve skill-brief schema beside the validator script
- fix(analyze-source): wire docs-only brief write through the canonical writer
- fix(campaign): resume to the next incomplete stage after a mid-stage halt
- fix(test-skill): add multi-entry exports-map denominator clause
Other Changes
- test(campaign): add structural linter for campaign step files
- Merge pull request #416 from armelhbobdad/campaign-orchestration
- docs: fix migration staleness and surface deepwiki + campaign entry points
- docs: weave deepwiki and campaign into the BMM synergy playbook
- docs: complete Deepwiki title casing in sidebar nav and intro
- docs: round out campaign coverage and deepwiki/campaign troubleshooting
- Merge pull request #417 from armelhbobdad/docs-accuracy-pass
- docs(analyze-source): drop the unreachable Go language-detection entry
- Merge pull request #419 from armelhbobdad/fix-autoscope-monorepo-discovery
- Merge pull request #420 from armelhbobdad/surface-deepwiki-in-setup
- Merge pull request #422 from armelhbobdad/fix-autoscope-remote-manifest-scan
- docs(scripts): normalize uv run idiom in helper CLI docstrings
- Merge pull request #423 from armelhbobdad/chore-uv-run-idiom
- Merge pull request #424 from armelhbobdad/fix-shape-detect-monorepo-refapp
- refactor(forger): rename the deepwiki pipeline alias to forge-auto
- Merge pull request #426 from armelhbobdad/rename-deepwiki-to-forge-auto
- Merge pull request #428 from armelhbobdad/codify-decomposition-cohesion-check
- docs(shape-detect): note whole-language value is corpora-dependent
- Merge pull request #429 from armelhbobdad/issue-427-language-reference-shape
- Merge pull request #434 from armelhbobdad/issue-430-433-language-reference-followups
- Merge pull request #435 from armelhbobdad/register-skf-campaign-help-entry
- Merge pull request #436 from armelhbobdad/skf-campaign-quality-hardening
- Merge pull request #437 from armelhbobdad/skf-workflows-quality-hardening
- docs: true up pages against current workflow behavior
- Merge pull request #438 from armelhbobdad/docs-post-merge-refresh
- docs(readme): tighten snippet-injection timing and health-check routing wording
- Merge pull request #439 from armelhbobdad/readme-precision-tweaks
- docs(create-skill): document generic-class gap in ast-grep class recipes
- Merge pull request #440 from armelhbobdad/skf-workflow-health-fixes
- docs(create-skill): state the confidence_distribution sum invariant for the producer
- Merge pull request #441 from armelhbobdad/fix-confidence-distribution-invariant
- docs(create-skill): state the confidence_distribution binning rule at the compile step
- Merge pull request #442 from armelhbobdad/docs-compile-confidence-distribution
- refactor(analyze-source): retire the unreachable export_count decomposition threshold
- Merge pull request #443 from armelhbobdad/retire-export-count-threshold
Installation
npx bmad-module-skill-forge installFull Changelog: v1.9.0...v2.0.0
Skill Forge (SKF) v1.9.0
What's New
New Features
- feat(skf-shape-detect): add shared shape-detection script for repo classification
- feat: doc detection chain shared module
- feat: doc tracking at compile time
- feat: doc drift detection in audit
- feat: SS active_version manifest-state bugfix
- feat: auto-scope mode for AN
- feat: auto-brief generation for BS
- feat: auto-brief validation with progressive fallback
- feat: auto-decomposition for massive repos
- feat: docs-only deepwiki path
- feat: coexistence detection
- feat: version pinning for deepwiki
- feat: deepwiki pipeline alias + onboard deprecation
- feat: v1.9 documentation
- feat: tiered quality gate — hard gate
- feat: per-pipeline quality thresholds
- feat: evidence report on threshold fallback
- feat: auto-shard at 400-line ceiling
- feat: pre-apply workaround registry
- feat: doc-rot correction hooks
Other Changes
- docs: update workflow steps for doc sources and doc drift
- Merge pull request #410 from armelhbobdad/source-intelligence-foundation
- Merge pull request #411 from armelhbobdad/deepwiki-zero-ceremony-skill-creation
- Merge pull request #412 from armelhbobdad/quality-scale-and-workaround-automation
- docs: fix doc-rot in workflow and verification docs
- Merge pull request #413 from armelhbobdad/quality-scale-and-workaround-automation
- Merge pull request #414 from armelhbobdad/dev
Maintenance
- chore: trigger CI
Installation
npx bmad-module-skill-forge installFull Changelog: v1.8.0...v1.9.0
Skill Forge (SKF) v1.8.0
What's New
New Features
- feat(skf-analyze-source): support composite sources and composite unit merges
Bug Fixes
- fix(shared/scripts): close three health-check gaps (CCC registry, token gate, specific-modules)
Other Changes
- Merge pull request #407 from armelhbobdad/fix/improvement-queue-batch-20260525
- Merge pull request #408 from armelhbobdad/feat/analyze-source-composite-support
Installation
npx bmad-module-skill-forge installFull Changelog: v1.7.0...v1.8.0
Skill Forge (SKF) v1.7.0
What's New
New Features
- feat(skf-brief-skill): add from_brief headless arg to ratify a pre-authored brief
Bug Fixes
- fix(skf-create-skill): gate description recovery on deterministic validator, not judge score
- fix(skf-create-skill): dismiss tessl "remove provenance annotations" suggestion
- fix(skf-export-skill): prevent managed-section wipe and marker duplication
- fix(skf-brief-skill): give workspace manifest_kind precedence in language detection
- fix(skf-update-skill): add gap-driven change categories for structural, metadata, provenance-completeness, and rescope gaps
- fix(skf-test-skill): harden coverage check against gaming, spot-check, and split-body gaps
- fix(skf-brief-skill): warn when a cross-ecosystem workspace manifest is dropped
- fix(skf-create-skill): define named-export counting unit and ccc init prerequisite
- fix(skf-export-skill): exclude shared managed section from package total
- fix(skf-test-skill): handle scalar denominator and normalize method entries in coverage check
- fix(skf-update-skill): gate gap-derived exports on public reachability
- fix(skf-export-skill): make managed-section writes atomic and verified
- fix(skf-export-skill): correct helper-contract docs in update-context
- fix(skf-export-skill): open atomic-write temp file in binary mode
- fix(skf-test-skill): guard non-git auto-reuse against date-only timestamp collision
- fix(shared-scripts): write atomic temp files in binary mode on Windows
- fix(skf-brief-skill): harden portfolio-similarity check for qmd output and scale
- fix(shared-scripts): parse current qmd collection list output in classifier
- fix(skf-create-skill): resolve monorepo crate tags in source resolution
- fix(skf-export-skill): pass managed-section content via stdin to avoid shell expansion
- fix(skf-test-skill): add Rust grep fallback for deflation-guard barrel re-derivation
- fix(skf-create-stack-skill): align compose-mode provenance confidence and stack version
- fix(skf-enumerate-stack-skills): resolve version-nested skill layout
- fix(skf-test-skill): add stack-skill branches to coverage scoring
- fix(skf-verify-stack): resolve feasibility schema ref via probe order
- fix(skf-verify-stack): distinguish deliberately-removed tech from skill gaps
- fix(installer): write output_folder to generated SKF config
- fix(skf-create-stack-skill): version re-composed stacks from prior release line
- fix(skf-refine-architecture): scope gap/issue analysis to the document's surface
- fix(skf-test-skill): accept stack/Rust export kinds and stack cross-refs
- fix(skf): write health-check local queue to forge_data_folder
- fix(skf-quick-skill): point context-snippet anchors at real QS headings
- fix(skf-test-skill): accept quick-skill headings in structural-scan gate
- fix(skf-test-skill): re-derive TS barrels across multi-line export blocks
- fix(skf-create-skill): resolve package exports map for entry points outside src/
- fix(skf-brief-skill): round-trip target_ref/tier_a_include/amendments on brief re-write
- fix(skf-brief-skill): analyze pinned target_version at its git tag, not HEAD
- fix(skf-create-skill): correct ast-grep 0.42.x TypeScript export recipes
- fix(skf-brief-skill): document monorepo subpackage scope convention
- fix(skf-create-skill): verify ccc index has source-language chunks
- fix(skf-brief-skill): capture tier_a_include for coarse-glob monorepo subsets
- fix(skf-skills): read skill-check score/counts from correct JSON paths
- fix(skf-create-stack-skill): gate frontmatter before publishing the package
- fix(skf-quick-skill): invoke frontmatter validator via uv run
- fix(skf-analyze-source): recognize reference-app scope type in briefs
- fix(skf-create-skill): omit effective_denominator for reference-app scope
- fix(skf-test-skill): wire reference-app skip flag in scoring
- fix(skf-test-skill): match Pattern Surface / Adoption Steps in structure scanner
- fix(skf-create-stack-skill): pre-check SKILL.md body size before commit
- fix(skf-test-skill,skf-export-skill): prefer active symlink when manifest lags
- fix(skf-create-skill,skf-test-skill): persist scope_type so reference-app scoring fires
- fix(skf-analyze-source): validate generated briefs with the deterministic schema check
- fix(skf-manifest-ops): archive all stale active versions on set
- fix(skf-create-stack-skill): extract library catalog for large stacks
Other Changes
- Merge pull request #356 from armelhbobdad/fix/skf-tessl-description-judge-vs-validator
- Merge pull request #357 from armelhbobdad/fix/skf-export-managed-section-safety
- Merge pull request #358 from armelhbobdad/fix/skf-brief-detect-language-workspace-precedence
- Merge pull request #359 from armelhbobdad/fix/skf-update-gap-driven-change-categories
- Merge pull request #360 from armelhbobdad/fix/skf-test-coverage-gaming-guards
- Merge pull request #361 from armelhbobdad/fix/skf-brief-cross-ecosystem-workspace-warning
- Merge pull request #362 from armelhbobdad/fix/skf-create-denominator-unit-and-ccc-init
- Merge pull request #363 from armelhbobdad/fix/skf-export-package-total-managed-section
- Merge pull request #364 from armelhbobdad/fix/skf-test-scalar-denominator-and-method-normalization
- Merge pull request #365 from armelhbobdad/fix/skf-update-public-reachability-gate
- Merge pull request #366 from armelhbobdad/fix/skf-export-context-atomicity-and-manifest-envelope
- Merge pull request #367 from armelhbobdad/fix/skf-test-nongit-staleness-precision-guard
- Merge pull request #368 from armelhbobdad/fix/skf-atomic-writers-binary-mode
- Merge pull request #369 from armelhbobdad/fix/skf-brief-portfolio-similarity-robustness
- Merge pull request #370 from armelhbobdad/fix/skf-qmd-classify-collection-list-parsing
- Merge pull request #371 from armelhbobdad/fix/skf-create-source-resolution-monorepo-tags
- Merge pull request #372 from armelhbobdad/fix/skf-export-stdin-and-test-rust-denominator
- Merge pull request #373 from armelhbobdad/fix/skf-create-stack-compose-mode-and-enumerate
- Merge pull request #374 from armelhbobdad/fix/skf-test-skill-stack-coverage-branches
- Merge pull request #375 from armelhbobdad/fix/skf-verify-stack-schema-ref-and-replaced-coverage
- Merge pull request #376 from armelhbobdad/fix/skf-installer-inherit-output-folder
- Merge pull request #377 from armelhbobdad/fix/skf-create-stack-skill-recompose-versioning
- Merge pull request #378 from armelhbobdad/fix/skf-refine-architecture-gap-scope-filter
- Merge pull request #379 from armelhbobdad/fix/skf-test-skill-stack-coverage-coherence
- Merge pull request #380 from armelhbobdad/fix/skf-health-check-queue-path
- Merge pull request #381 from armelhbobdad/fix/skf-quick-skill-heading-vocabulary
- Merge pull request #382 from armelhbobdad/fix/skf-test-skill-ts-barrel-multiline
- Merge pull request #384 from armelhbobdad/fix/skf-create-skill-exports-map-entrypoints
- Merge pull request #386 from armelhbobdad/feat/skf-brief-skill-from-brief-headless
- Merge pull request #387 from armelhbobdad/fix/skf-brief-writer-roundtrip-385
- Merge pull request #388 from armelhbobdad/fix/skf-brief-analysis-ref
- Merge pull request #389 from armelhbobdad/fix/skf-create-astgrep-ts-recipes
- Merge pull request #390 from armelhbobdad/fix/skf-brief-monorepo-subpackage-convention
- Merge pull request #391 from armelhbobdad/fix/skf-create-ccc-index-verification
- Merge pull request #392 from armelhbobdad/fix/skf-brief-capture-tier-a-monorepo
- Merge pull request #393 from armelhbobdad/fix/skf-skill-check-json-field-paths
- Merge pull request #394 from armelhbobdad/fix/skf-stack-precommit-frontmatter-gate
- Merge pull request #395 from armelhbobdad/fix/skf-quick-frontmatter-validator-uv-run
- Merge pull request #396 from armelhbobdad/fix/skf-reference-app-toolchain-wiring
- Merge pull request #397 from armelhbobdad/fix/skf-create-stack-precommit-body-gate
- Merge pull request #398 from armelhbobdad/fix/skf-prefer-active-symlink-on-manifest-lag
- Merge pull request #399 from armelhbobdad/fix/skf-reference-app-scope-type-metadata
- Merge pull request #400 from armelhbobdad/fix/skf-analyze-source-deterministic-brief-validation
- docs(skf-analyze-source,skf-create-skill): document language references as a reference-app sub-shape
- Merge pull request #401 from armelhbobdad/feat/skf-language-reference-scope-type
- Merge pull request #402 from armelhbobdad/fix/skf-manifest-ops-archive-stranded-active
- Merge pull request #403 from armelhbobdad/fix/skf-stack-catalog-extraction
Installation
npx bmad-module-skill-forge installFull Changelog: v1.6.0...v1.7.0
Skill Forge (SKF) v1.6.0
What's New
New Features
- feat(skf): ratify existing skill-brief.yaml in brief-skill
Bug Fixes
- fix(skf): route resume after generate-briefs to health-check
- fix(shared): YAML round-trip in description-guard restore
- fix(skf): resolve test report by glob in update-skill --from-test-report
Other Changes
- docs(skf): require trigger phrase + gerund in description rule
- Merge pull request #350 from armelhbobdad/docs/skf-create-skill-description-trigger-phrase
- Merge pull request #351 from armelhbobdad/fix/skf-analyze-source-continue-route-health-check
- Merge pull request #352 from armelhbobdad/fix/skf-description-guard-yaml-roundtrip
- Merge pull request #353 from armelhbobdad/feat/skf-brief-skill-ratify-existing-brief
- Merge pull request #354 from armelhbobdad/fix/skf-update-skill-from-test-report-glob
Installation
npx bmad-module-skill-forge installFull Changelog: v1.5.1...v1.6.0
Skill Forge (SKF) v1.5.1
What's New
Bug Fixes
- fix(skf): bound detect-tools probes so a hung daemon can't stall it
- fix(skf): restrict detect-tools timeout wrapper to POSIX
- fix(skf): correct step-file instructions surfaced by health checks
- fix(skf): correct analyze-source roots and manifest IDE recording
- fix(skf): prevent npx install hint from being parsed as github org/repo
Other Changes
- Merge pull request #344 from armelhbobdad/fix/skf-detect-tools-cli-timeout
- Merge pull request #345 from armelhbobdad/fix/skf-step-instruction-corrections
- Merge pull request #346 from armelhbobdad/fix/skf-analyze-source-and-manifest-ides
- refactor(skf): migrate shared-script frontmatter to ProbeOrder
- Merge pull request #347 from armelhbobdad/refactor/skf-shared-script-probe-order
- Merge pull request #348 from armelhbobdad/fix/skf-export-skill-npx-install-path-trap
Installation
npx bmad-module-skill-forge installFull Changelog: v1.5.0...v1.5.1
Skill Forge (SKF) v1.5.0
What's New
New Features
- feat(skf-setup): tighten headless contract, add CLI knobs, ship customize.toml
- feat(shared): extract Description Guard into shared script + protocol doc
- feat(shared): extract scripts/assets detection from create-skill step 3 §4c
- feat(shared): extract SHA-256 hashing helpers from update-skill detect-changes
- feat(shared): extract brief schema validation + wire 4 latent test files into CI
- feat(shared): extract workspace-drift guard from update-skill §0.a
- feat(shared): extract atomic active-symlink flip for update-skill §5b + §6
- feat(shared): extract change-manifest aggregation + §2.2 deletion-ratio trigger
- feat(shared): extract §1c discovery/parse/reconcile pipeline
- feat(shared): extract §2a Authoritative Files Protocol (last of 9 extractions)
- feat(skf-update-skill): add SKF_UPDATE_RESULT_JSON envelope + headless_decisions[]
- feat(skf-update-skill): add --dry-run and --detect-only inspection modes
- feat(skf-update-skill): add PID-file concurrency guard against double-invoke
- feat(skf-brief-skill): wire customize.toml path scalars (closes #307 D1)
- feat(skf-feature): extract 7 deterministic operations to shared scripts + modernize compute-score CLI
- feat(skf-feature): surface extensions, structural carves, resume protocols + polish
- feat(skf-drop-skill): blast-radius summary line in §10 confirmation gate
- feat(skf-brief-skill): capture authoring-time scope.rationale
Bug Fixes
- fix(shared): normalize path separators in JSON output for cross-platform CI
- fix(test): assert path.as_posix() in --include-path tests for Windows CI
- fix(test): use as_posix() for cross-platform path assertion in pruning test
- fix(skf-export-skill): iterate orphan-row probe across all target context files
Other Changes
- refactor: unify carved-content layout (steps-c/ → references/) and stamp Conventions
- refactor(shared/scripts): push deterministic operations into helpers
- Merge pull request #305 from armelhbobdad/refactor/skf-stages-rename
- refactor(skf-core): ship customize.toml + language headers across brief/create/update
- Merge pull request #306 from armelhbobdad/refactor/elevate-skf-core-skills
- Merge pull request #308 from armelhbobdad/feat/skf-description-guard
- Merge pull request #309 from armelhbobdad/feat/skf-detect-scripts-assets
- Merge pull request #310 from armelhbobdad/feat/skf-hash-content
- Merge pull request #311 from armelhbobdad/feat/skf-validate-brief-schema
- Merge pull request #312 from armelhbobdad/feat/skf-check-workspace-drift
- Merge pull request #313 from armelhbobdad/feat/skf-update-active-symlink
- Merge pull request #314 from armelhbobdad/feat/skf-build-change-manifest
- Merge pull request #315 from armelhbobdad/feat/skf-provenance-gap-dispatch
- Merge pull request #316 from armelhbobdad/feat/skf-resolve-authoritative-files
- refactor(skf-create-skill): carve §2a Authoritative Files Protocol to own file
- Merge pull request #317 from armelhbobdad/refactor/carve-authoritative-files-protocol
- perf(skf-create-skill): parallelize fetch-temporal + fetch-docs network ops
- Merge pull request #318 from armelhbobdad/perf/parallelize-fetches
- Merge pull request #319 from armelhbobdad/feat/skf-update-result-envelope
- Merge pull request #320 from armelhbobdad/feat/skf-update-dry-run-detect-only
- Merge pull request #321 from armelhbobdad/feat/skf-update-concurrency-lock
- Merge pull request #322 from armelhbobdad/feat/skf-brief-customize-scalars
- refactor(skf-core): post-elevation tightening pass across all 3 Core skills
- Merge pull request #323 from armelhbobdad/refactor/skf-core-quality-tightening
- refactor(skf-feature): elevate 5 Feature workflows toward Excellent (foundation pass)
- Merge pull request #324 from armelhbobdad/refactor/skf-feature-elevation-foundation
- refactor(skf-feature): post-elevation tightening pass across all 5 Feature skills
- Merge pull request #326 from armelhbobdad/refactor/skf-feature-elevation-tightening
- Merge pull request #327 from armelhbobdad/feat/skf-feature-scripts
- Merge pull request #328 from armelhbobdad/feat/skf-feature-surface
- refactor(skf-arch-utility-mgmt): elevate 5 workflows toward Excellent (foundation pass)
- Merge pull request #329 from armelhbobdad/refactor/skf-arch-utility-mgmt-elevation-foundation
- refactor(skf-arch-utility-mgmt): post-elevation tightening pass across 5 skills
- Merge pull request #330 from armelhbobdad/refactor/skf-arch-utility-mgmt-elevation-tightening
- refactor(skf-export-skill): carve §3b orphan context-file detection + §4c.1 orphan row detection
- refactor(skf-export-skill): carve §1b snippet-prefix probe + §1c multi-skill matrix
- refactor(skf-rename-skill): carve §7 Rebuild Context Files to dedicated reference
- Merge pull request #334 from armelhbobdad/feat/skf-drop-skill-blast-radius-summary
- Merge pull request #333 from armelhbobdad/fix/skf-export-multi-file-orphan-probe
- Merge pull request #332 from armelhbobdad/refactor/skf-issue-331-carves
- Merge pull request #336 from armelhbobdad/chore/skf-issue-335-drop-redundant-scaffolding
- test(skf): add chain-reachability lint for workflow skills
- Merge pull request #337 from armelhbobdad/feat/skf-chain-reachability-lint
- docs(skf-drop-skill): post-cancel --dry-run hint + selection memo under dry-run
- Merge pull request #339 from armelhbobdad/chore/skf-drop-skill-issue-338-dry-run-hints
- Merge pull request #340 from armelhbobdad/feat/skf-brief-scope-rationale
- Merge pull request #341 from armelhbobdad/feat/skf-workflow-rules-v2
- Merge pull request #342 from armelhbobdad/chore/readme-trim-maintainer-sections
Maintenance
- chore(skf): propagate v2 Workflow Rules trim across skf-* skills
- chore(readme): drop maintainer-only Versioning & Release Process sections
Installation
npx bmad-module-skill-forge installFull Changelog: v1.4.1...v1.5.0
Skill Forge (SKF) v1.4.1
What's New
Bug Fixes
- fix(skf-create-skill): allow empty references/ when Tier-2 is inline
- fix(skf-setup): reject {project-root} placeholders in ccc-exclusions merge
- fix(skf-audit-skill): normalize sha256: prefix in step-03 §4b hash comparison
- fix(skf-audit-skill): handle dirty worktree in step-01 §5b checkout handler
- fix(skf-audit-skill): gate manifest-vs-symlink drift in step-01 §1
- fix(skf-export-skill): glob timestamped test reports in step-01 §4b
- fix(skf-export-skill): treat first-export gotchas as fresh in step-03 §3.5
- fix(skf-export-skill): handle manifest-orphan managed rows in step-04 §4c
- fix(skf-export-skill): document deviations[] on result contract for §4c.1
Other Changes
- Merge pull request #300 from armelhbobdad/fix/skf-create-skill-tier2-inline-exception
- Merge pull request #301 from armelhbobdad/fix/skf-setup-ccc-exclusions-placeholder
- Merge pull request #302 from armelhbobdad/fix/skf-audit-skill-step-fixes
- Merge pull request #303 from armelhbobdad/fix/skf-export-skill-step-fixes
Installation
npx bmad-module-skill-forge installFull Changelog: v1.4.0...v1.4.1
Skill Forge (SKF) v1.4.0
What's New
New Features
- feat(skf-brief-skill): pin language directive in every step's Rules block
- feat(skf-brief-skill): expand headless contract — args, JSON result, overwrite policy
- feat(skf-brief-skill): diagnostic-on-failure at HITL gates
- feat(skf-brief-skill): add explicit description synthesis with confirmation
- feat(skf-brief-skill): recommend a scope-type instead of presenting five equal options
- feat(skf-brief-skill): always show scripts/assets/forge-tier with one-line glosses in step-04
- feat(skf-brief-skill): gloss the forge tier in step-01 welcome banner
- feat(skf-brief-skill): replace step-01 §7b description template with voice-varied examples
- feat(shared/scripts): add skf-validate-brief-inputs.py with full test coverage
- feat(skf-brief-skill): pre-validate repo URLs and gh auth at point of capture
- feat(skf-brief-skill): regex-validate target_version semver at point of capture
- feat(skf-brief-skill): auto-suggest alternates on brief-name collision in step-01 §6
- feat(shared/scripts): add register-qmd-collection subcommand to skf-forge-tier-rw
- feat(shared/scripts): add skf-emit-brief-result-envelope.py with JSON Schema
- feat(shared/scripts): add skf-write-skill-brief.py with JSON Schema and 63 tests
- feat(shared/scripts): add skf-detect-workspaces.py with JSON Schema and 35 tests
- feat(skf-brief-skill): detect headless source_authority from gh api user vs repo owner
- feat(skf-brief-skill): seed headless §7b description from GitHub repo description when intent is missing
- feat(skf-brief-skill): run scope-type recommendation in headless instead of stamping full-library
- feat(skf-brief-skill): add [X] Cancel and exit affordance with stable exit code 6
- feat(skf-brief-skill): add 50ms pre-flight write probe at step-01 §1
- feat(skf-brief-skill): add --preset headless arg for repeated-pattern briefs
- feat(skf-brief-skill): persist .brief-draft.json checkpoint and offer Resume? on re-entry
- feat(skf-brief-skill): add QMD portfolio-similarity check at step-01 §6 (Forge+/Deep)
- feat(skf-brief-skill): add 'wanted something different?' disambiguation rail to welcome banner
- feat(skf-brief-skill): accept cancel/exit at §3.1 target prompt
- feat(skf-brief-skill): offer 'show me an example brief?' rail before §4 intent prompt for first-timers
- feat(skf-brief-skill): add gh api repos access probe to §3.3 parallel pre-flight batch
- feat(skf-brief-skill): add routing-purpose microcopy at description synthesis and review sites
- feat(skf-brief-skill): add soft sentence-count check on synthesized description in §7b
- feat(skf-brief-skill): add 'looks like' concrete examples to each scope-type entry
- feat(extract-public-api): detect release-time placeholder versions and surface as warning
- feat(shared/scripts): add skf-recommend-scope-type.py — single source of truth for the 5-rule heuristic ladder
- feat(write-skill-brief): add --from-flat input mode for prose-driven callers
- feat(shared/scripts): add skf-detect-language.py — deterministic primary-language detection
Bug Fixes
- fix(skf-brief-skill): prefix bare _bmad/ path with {project-root}
- fix(skf-brief-skill): mark step-06 as terminal with completion sentinel
- fix(skf-brief-skill): remove parent-dir frontmatter paths and home-dir reference
- fix(skf-brief-skill): add explicit Completion criteria to terminal step-06
- fix(skf-brief-skill): propagate input-invalid halt_reason and add priority test
- fix(skf-brief-skill): address in-PR code review findings
- fix(skf-detect-workspaces): correct lerna default, generic-folder accumulation, python libs layout
- fix(skf-brief-skill): unblock headless heuristics — validator default, GATE placement, contract docs
- fix(skf-brief-skill): close contract gaps for [X] cancel and write probe
- fix(skf-brief-skill): correct QMD CLI surface, tier guard, resume-jump skip, preset KNOWN_FIELDS
- fix(skf-brief-skill): first-timer rail — concrete find command + match prompt to actual content
- fix(skf-brief-skill): wire new test file into test:python + instruct LLM to fetch registry contents at §2c
Other Changes
- refactor(skf-brief-skill): consolidate version-resolution rules into a shared reference
- docs(skf-brief-skill): expand Overview with scoping theory and split rationale
- refactor(skf-brief-skill): wire skf-extract-public-api.py into step-02
- Merge pull request #271 from armelhbobdad/feat/skf-brief-skill-quality-fixes
- style(skf-brief-skill): polish SKILL.md trigger phrase and stage table
- style(skf-brief-skill): convert user-facing "Please" prompts to direct imperatives
- refactor(skf-brief-skill): split step-01 §3 conditionals into named sub-sections
- refactor(skf-brief-skill): convert step-01 §8 headless GATE prose to table
- refactor(skf-brief-skill): split step-02 §4 into named sub-sections
- perf(skf-brief-skill): batch doc_urls HEAD checks in parallel with timeout
- perf(skf-brief-skill): batch gh api calls in parallel in step-02
- perf(skf-brief-skill): codify lazy reference loading and tighten version-resolution load
- Merge pull request #272 from armelhbobdad/fix/skf-brief-skill-cosmetic-polish
- Merge pull request #273 from armelhbobdad/feat/skf-brief-skill-surface-defaults
- Merge pull request #274 from armelhbobdad/perf/skf-brief-skill-parallel-batching
- test(skf-validate-brief-inputs): wire new test suite into npm test:python
- refactor(skf-brief-skill): wire skf-validate-brief-inputs.py into step-01 §8 GATE
- docs(skf-brief-skill): document new input-invalid halt_reason in SKILL.md
- Merge pull request #275 from armelhbobdad/feat/skf-brief-skill-fail-fast-validation
- refactor(skf-brief-skill): wire step-05 to delegate to shared scripts
- Merge pull request #276 from armelhbobdad/refactor/skf-brief-skill-step-05-scripts
- refactor(skf-brief-skill): gate step-04 brief schema load to inline-adjustments only
- refactor(skf-brief-skill): drop unused version-resolution load from step-01 §3b
- refactor(skf-brief-skill): de-duplicate brief presentation format — step-04 is canonical
- refactor(skf-brief-skill): extract step-05 §5 QMD registration to lazy-loaded reference
- docs(skf-brief-skill): update version-resolution.md load-site list after step-01 drop
- Merge pull request #277 from armelhbobdad/refactor/skf-brief-skill-lazy-load-gaps
- docs(skf-brief-skill): clarify communication_language vs document_output_language in Workflow Rules
- refactor(skf-brief-skill): drop version-precedence restatement in step-05 §3
- refactor(skf-brief-skill): soften "three alternates" to "2-3 non-colliding" in step-01 §6
- refactor(skf-brief-skill): trim maintainer-rationale narrative from step-01 runtime instructions
- refactor(skf-brief-skill): guard [2] alternate render in step-01 §6 collision template
- Merge pull request #278 from armelhbobdad/refactor/skf-brief-skill-prompt-craft-cleanups
- refactor(skf-brief-skill): extract description-voice examples to lazy-loaded asset
- refactor(skf-brief-skill): extract headless argument table to lazy-loaded reference
- refactor(skf-brief-skill): make §7b voice-examples Load explicit on the headless path
- Merge pull request #279 from armelhbobdad/refactor/skf-brief-skill-extract-references
- refactor(skf-brief-skill): wire step-02 §1b to delegate workspace detection to script
- Merge pull request #280 from armelhbobdad/feat/skf-detect-workspaces
- Merge pull request #281 from armelhbobdad/feat/skf-brief-skill-headless-heuristics
- Merge pull request #282 from armelhbobdad/feat/skf-brief-skill-cancel-and-write-probe
- Merge pull request #283 from armelhbobdad/feat/skf-brief-skill-preset-draft-qmd-similarity
- refactor(skf-brief-skill): move On Activation block above Stages
- refactor(skf-brief-skill): canonicalize headless envelope-emission contract in step-05 §4b
- refactor(skf-brief-skill): cache step-03 §2b HEAD probe across [R] re-entry + add step-04 §1 schema anti-load guard
- Merge pull request #284 from armelhbobdad/refactor/skf-brief-cleanup-quick-wins
- refactor(skf-brief-skill): extract headless source-authority detection to lazy reference
- refactor(skf-brief-skill): extract portfolio-similarity check to lazy reference
- refactor(skf-brief-skill): extract draft-checkpoint lifecycle (resume + write) to lazy reference
- Merge pull request #285 from armelhbobdad/refactor/skf-brief-step01-lazy-refs
- Merge pull request #286 from armelhbobdad/refactor/skf-brief-step01-ux-safety-rails
- refactor(skf-brief-skill): wire step-03 §2c + §6 GATE to invoke skf-recommend-scope-type.py
- Merge pull request #287 from armelhbobdad/refactor/skf-brief-recommend-scope-type-script
- refactor(skf-brief-skill): step-05 §3 uses --from-flat — eliminates conditional-omit logic at the JSON-typo HALT site
- Merge pull request #288 from armelhbobdad/refactor/skf-brief-writer-flat-input
- refactor(skf-brief-skill): wire step-02 §3 to invoke skf-detect-language.py
- Merge pull request #289 from armelhbobdad/refactor/skf-brief-detect-language-script
- docs(workflows): document headless skf-brief-skill contract and --preset
- Merge pull request #290 from armelhbobdad/docs/workflows-headless-brief-skill
Installation
npx bmad-module-skill-forge installFull Changelog: v1.3.0...v1.4.0
Skill Forge (SKF) v1.3.0
What's New
New Features
- feat(skf-quick-skill): redirect free-form prose input to sibling skills before registry lookup
- feat(shared): add --skip-frontmatter flag and Description section to skf-validate-output.py
- feat(skf-quick-skill): add [E] edit, [S] re-scope, [Q] quit options to step-04 review gate
- feat(skf-quick-skill): emit step.start/step.done JSON events to stderr in headless mode
- feat(skf-quick-skill): write error-variant result contract on every HARD HALT
- feat(skf-quick-skill): add --description / --exports / --skip-snippet / --no-active-pointer overrides
- feat(skf-quick-skill): add repo-shape sniff between step-03 README read and manifest parse
- feat(skf-quick-skill): surface ambiguous-language choice in step-01 §4 instead of silently picking
- feat(skf-quick-skill): verify @Version tag exists before extraction in step-01 §3a
- feat(skf-quick-skill): add zero-exports soft-gate in step-03 §4.5 (rescue mode)
- feat(shared): add skf-resolve-package.py for npm/PyPI/crates GitHub URL resolution
- feat(shared): add skf-extract-public-api.py — pure-parser extraction across 6 languages
- feat(shared): add skf-render-quick-metadata.py — pure metadata.json renderer
- feat(skf-quick-skill): add --batch and --fail-fast flags to On Activation overrides
- feat(skf-quick-skill): document Batch Mode semantics, summary contract, and events
- feat(skf-quick-skill): wire batch context into step-01 §1 input handling
Bug Fixes
- fix(skf-quick-skill): resolve atomic-flip helper via probe order, not hardcoded src/ path
- fix(skf-quick-skill): prefix bare _bmad/src refs with {project-root}/
Other Changes
- docs(workflows): document /skf-setup --require-tier flag + headless envelope contract
- docs(troubleshooting): list new uv-missing + missing-config diagnostics from v1.2.0
- docs(workflows): make schema + step-prompt file references clickable
- docs(skill-model): refresh Forge Status example to v1.2.0 actual output
- Merge pull request #256 from armelhbobdad/docs/workflows-troubleshooting-v1.2.0-additions
- Merge pull request #258 from armelhbobdad/fix/skf-quick-skill-helper-path-installed-mode
- refactor(skf-quick-skill): wire skf-validate-frontmatter.py into step-05 fallback
- docs(skf-quick-skill): document result contract + scope_hint provenance in outputs
- perf(skf-quick-skill): collapse sequential network reads into batched parallel fetches
- refactor(skf-quick-skill): trim duplicated boilerplate; consolidate metadata schema
- Merge pull request #259 from armelhbobdad/chore/skf-quick-skill-quality-phase-1
- refactor(skf-quick-skill): collapse step-05 §5–§7 hand-walked checklists into skf-validate-output.py invocation
- test(shared): cover --skip-frontmatter and Description-section enforcement in skf-validate-output.py
- Merge pull request #260 from armelhbobdad/refactor/skf-quick-skill-wire-validator
- docs(skf-quick-skill): document 10s per-call registry timeout in registry-resolution.md
- refactor(skf-quick-skill): reduce step-01 §3 to one-line load+apply, defer to registry-resolution.md
- refactor(skf-quick-skill): drop prose probe-path enumeration in step-05 §4 and step-06 §1
- refactor(skf-quick-skill): split step-04 §4 metadata population into constants table + input-derived rules
- Merge pull request #261 from armelhbobdad/refactor/skf-quick-skill-canonical-surfaces
- perf(skf-quick-skill): replace step-04 §5 inline preview with one-line summary in headless mode
- refactor(skf-quick-skill): rename step-05/06 files to align with Stages-table labels
- Merge pull request #262 from armelhbobdad/feat/skf-quick-skill-step-04-review-gate
- docs(skf-quick-skill): document structured exit-code map and wire codes into HARD HALT sites
- docs(skf-quick-skill): wire exit code 7 (finalize-blocked) into step-06 §1 active-pointer HALT
- Merge pull request #263 from armelhbobdad/feat/skf-quick-skill-headless-contract
- Merge pull request #264 from armelhbobdad/feat/skf-quick-skill-edge-case-sniffs
- test(shared): cover skf-resolve-package.py — URL parser, registry payloads, fallthrough
- refactor(skf-quick-skill): invoke skf-resolve-package.py from step-01 §3
- Merge pull request #265 from armelhbobdad/refactor/skf-quick-skill-resolve-helper
- test(shared): cover skf-extract-public-api.py — 33 cases across all 6 languages
- refactor(skf-quick-skill): invoke skf-extract-public-api.py from step-03 §2 + §3
- Merge pull request #266 from armelhbobdad/refactor/skf-quick-skill-extract-helper
- test(shared): cover skf-render-quick-metadata.py — 33 cases
- refactor(skf-quick-skill): invoke skf-render-quick-metadata.py from step-04 §4
- docs(shared): document skf-emit-result-envelope.py divergence in output-contract-schema.md
- Merge pull request #267 from armelhbobdad/refactor/skf-quick-skill-render-metadata
- Merge pull request #268 from armelhbobdad/feat/skf-quick-skill-batch-mode
- docs(workflows): document skf-quick-skill override flags and batch mode in QS section
- docs(workflows): add /skf-quick-skill exception block to Headless Mode (v1.3.0+)
- docs(workflows): drop inline version-stamp markers
- Merge pull request #269 from armelhbobdad/docs/skf-quick-skill-flags-and-headless
Maintenance
- chore(skf-quick-skill): add config headers, progression keywords, direct imperatives
- chore: include test/test-skf-resolve-package.py in npm run test:python
- chore: include test/test-skf-extract-public-api.py in npm run test:python
- chore: include test/test-skf-render-quick-metadata.py in npm run test:python
Installation
npx bmad-module-skill-forge installFull Changelog: v1.2.0...v1.3.0