Repository navigation
Releases: tikalk/adlc-team-skills
Release list
adlc-team-skills v0.32.0
adlc-team-skills-v0.32.0 v0.32.0
adlc-team-skills v0.31.0
Added
-
Factory-owned
issues-provider.ymltracker config (ADR-427) — the factory release ships a canonical provider template (skills/factory/factory-mission/references/issues-provider.yml, rename-only from spec-kit'staskstoissues-provider.ymlschema, never-tokens rule retained); target repos carry a committed copy at.adlc/issues-provider.yml.tracker-integration.md§1 now resolves{{params.tracker_provider}}→ new path → loud halt, deleting both the silentgithubdefault that mis-targeted repos without spec-kit and the legacy spec-kit path read (repos carrying only the old file must add the factory-canonical copy; spec-kit itself untouched). No shipped factory file references.specify. Pinned bytests/unit/test_issues_provider_contract.py. -
factory-setup(skills/factory/factory-setup/, ADR-428) — setup-time companion to the tracker-integration layer: detect-from-git-remote / pick-explicitly / already-configured modes write.adlc/issues-provider.yml(provider + mappings only, never credentials, never overwrite; decline is session-scoped, no init-options marker).team-bootsuggests it when factory skills are installed but no provider config resolves;tracker-integration.mdhalt names it as the fix path. Pinned bytests/unit/test_factory_setup_contract.py+ goldsetEVAL-FACTORY-015with gradercheck_no_credential_in_provider. Mode 3 also verifies the required label vocabulary and offers confirm-gated creation of missing labels (interactive only, re-verified; Jira/Linear excluded). -
factory-reviewre-reviews final head after fix pushes (#68) — SKILL.md §2 step 8 + §4 babysit carry the re-review-after-fix procedure (verdict certifies exactly one head SHA; merge-ready on a superseded head is a contract violation);setup-architect.shregeneration refuses on uncommittedAD.mdwithoutFORCE_REGENERATE=1. -
Refusal-aware eval graders + thinking-suppression (#67) —
check_factory_invariants.pyADR-338/PDR-052 checks exempt forbidden tokens inside refusals via a ±60-char negation window;config.jsprompt bans thinking/deliberation preamble and input-token quoting (the goldset leak source). Grader unit tests 85/85. -
Warn-and-continue on absent team-boot context (#66, closes #58) — six
## Absent Contextbanners (architect/product/change/tech-radar boots, team-levelup, team-discover) with direct index-read fallback andRecovery: run /team-diagnose;factory-mission/factory-review/factory-queueread the index directly (ADR-401 dual-read order);factory-learnretrospective sweeps.adlc/drafts/for unclarified entries.
Changed
-
Single merged Team Context & Decisions table (#56) — the per-response Team Context in Use section and Session Decision Ledger merge into one 6-column table; Status carries the accepted-vs-pending distinction (
in use+—= grounding context, never drafts;pending/captured/clarified/handed off+ skill = owed decisions); one counts line (_Scope: … — J rows shown · Unrecorded: N pending · Unclarified: M captured drafts._). Pending Decisions session-start inventory unchanged. Pinned bytest_single_response_table_contract+test_status_semantics_rule+ reshaped header-count assertions. -
Deck↔code glossary in 12-Factor alignment table (#49, PDR-057) — canonical term mapping (plan-of-record agnosticism, evidence-chain/audit trail, triage scoring, Lit Factory/Ratchet name mapping, mission-brief and team-learn settled renames). Documentation-only.
Fixed
- Class-boot contract fix: early-fire, 0-rows rendering, radar re-emission, workspace fallback (#50) — class boots now invoke at the START of a matching task (before todo planning/implementation, never deferred); 0 rows matched emits heading + counts/searched line only with no table (a 0-row table header collapsed into unrendered single-line markdown);
tech-radar-bootre-emits tool-channel script findings in the visible response;radar-search.sh/.ps10-match output drops the empty table; boots in memory-less submodule CWDs fall back to the workspace root memory (.gitmodulesmarker, ADR-401 dual-read order). Pinned by 5 new class-boot contract tests + 2 radar 0-match tests (tests/unit/test_team_class_boots.py,tests/unit/test_tech_radar.py). - Memory centralization migration (#51, ADR-412) — workspace
docs/adlc/memory/is the sole ADR/PDR tracker; the 18 ADRs + 14 PDRs of the legacy untracked.adlc/memory/verified row-by-row against workspace equivalents (30 duplicates/subsumed, unique PDR-030 → PDR-108 agent-authored stamp and PDR-057 → PDR-109 deck↔code terminology imported);docs/decision-memory.mdtombstone carries the record map. - Sync-test mirror staleness (#54) — regenerated install artifacts (
team-learn→team-levelup);test_generated_artifacts_sync.pygreen again. Single-canonical-script guard added (test_single_canonical_radar_search_script_pair) after a staletech-radar-contextalias copy ofradar-search.shwas found emitting the old 0-match table. - Shell-to-Python injection hardening + unescaped JSON builders (#74) — replaced all
python3 -c "... open('$VAR') ..."interpolation withsys.argvpassing, emit all--jsonoutput viajson.dumps, droppedeval $()in favor of direct calls/parsed assignment, pinned radar fetch to HTTPS, and allowlisted submodule remotes;setup-architect.sh~14 echo-built JSON emitters (+2 inner fragment builders) converted topython3/json.dumpsvia quoted heredocs, andworkspace.shparent_sha_forhardened with|| trueunderset -euo pipefail. Pinned bytests/unit/test_shell_security_regression.py(shellcheck-S error+bash -nclean). - UTF-8 BOM on non-ASCII
.ps1scripts for PowerShell 5.1 (#72) — BOM prepended to the 24 non-ASCII scripts underskills/**so PS 5.1 decodes them as UTF-8 instead of the system ANSI codepage (which corrupted multi-byte sequences into bogus string delimiters and broke everyteam-boothook on Windows sessions). No logic changes;pwsh/bash ignore the BOM. boot.shsilent crash on missingteam_ai_directiveskey (#65) — thegrepextraction pipeline underset -euo pipefailexited 1 with zero output when.adlc/init-options.jsonexisted without the key; wrapped in(...) || trueso it falls through to the existing not-configured branch.
adlc-team-skills v0.30.0
Added
-
Ledger→todo contract alignment across all decision-capture surfaces — the per-decision task-list todo + trailing ledger-sweep todo (shipped in #40 only in the injected
AGENTS.mdmanaged section) now also lives inboot.sh/boot.ps1session-start output (Surface ledger step rewritten),team-bootSKILL.md (Surface step + Verification line),team-bootreferences/decision-capture.md(new Todo Surfacing section with harness mapping and no-task-list-tool fallback), the four class boots andteam-levelup(todo-mirroring sentences), and is documented inteam-setup's post-setup reference. Class-boot ledger paragraphs migrated from the stale inline 4-column grammar (Decision | Type | Captured? | Skill) to the unified 6-column grammar (ID | Name | Type | Rel | Status | Clarify). Pinned bytest_ledger_todo_contract_on_all_surfaces+test_no_stale_inline_4col_ledger_grammarintests/unit/test_team_boot_setup_flow.py. -
Ledger-sweep counts unclarified drafts;
change-bootfires on git commands with human-authored messages — the sweep target is now_Unrecorded: 0 pending · Unclarified: 0 drafts_: a captured row exits only via its clarify skill (clarified) or an explicit user handoff to a named clarify or execute skill (handed off), so writing drafts alone can no longer close the sweep. The session-end step delivers a clarify prompt naming each captured draft (ID + skill) instead of pointing atpendingdrafts.change-bootinvocation now covers in-session git commands with human-authored messages (commit/merge/revert/rebase/cherry-pick/tag), authored PR title/body (at create and merge), and CHANGELOG edits — evaluated under the proportionality gate at session end; routine ops with generated or empty messages are not ChDRs.change-bootStep 2's draft scan is renamed to theUnclarifiedcount with aproposed/discovered↔capturedmapping note, and its description now names both/change-init(mining) and/change-clarify(clarify gate).post-setup-agents.mdjoins the pinned surface map (edited for #42 but never covered). Pinned by extendedtest_ledger_todo_contract_on_all_surfaces+ newtest_change_boot_git_command_trigger.
Changed
- Renamed
team-learn→team-levelup— skill dir, SKILL.mdname:, scripts, all cross-refs (boot surfaces, events, helpers, README), and report file.adlc/team-learn-report.md→.adlc/team-levelup-report.md. Retires the stale legacylevelup-*family. Hard rename, no alias or compat shim.
adlc-team-skills v0.29.0
Added
writing-skills(skills/authoring/writing-skills/+templates/SKILL-template.md+references/skill-testing.md) — TDD-for-skills authoring methodology adapted from superpowers' writing-skills: Iron Law (no skill without a failing baseline first), RED-GREEN-REFACTOR for skills, micro-testing wording protocol, Match-the-Form-to-the-Failure guidance, and this repo's structure rules (2-level depth, trigger-only descriptions, token budgets, eval-coverage requirement).- EVAL-011: Writing-Skills Baseline-First Compliance (
evals/promptfoo/) — goldset criterion + binary gradercheck_writing_skills_baseline.py+ unit tests: an agent asked to create a skill must run/demand the failing baseline before authoring content. - EVAL-012: Factory-Mission RED-Gate Enforcement (
evals/promptfoo/) — goldset criterion + binary gradercheck_factory_mission_tdd.py+ unit tests: a green-at-RED suite must stop the run and route to SPEC_CORRECTION_NEEDED, never proceeding to the code step. tests/unit/test_generated_artifacts_sync.py— 3 tests keeping CLI-generated install artifacts (.agents/skills/mirror,.opencode/commands/) in sync withskills/; skips where artifacts aren't generated. Catch-power proven by mirror-corruption.requirements.txt— pinned dev dependencies matching CI (pytest 9.1.1, pyyaml 6.0.3, deepeval 4.1.5); CONTRIBUTING prerequisites updated topip install -r requirements.txt.- Integrity-test expansion (
tests/unit/test_playbook_integrity.py) — description presence + 1024-char limit (validator self-tested against broken fixtures), exact-2-level depth rule, and "Use when…" trigger-only description rule; template frontmatter scan now covers authoring templates. tdd: truekey inskills/mission/mission-brief/config-template.yml— documented opt-out for the factory-mission TDD split.session_compactevent declared in.events.json— post-compaction re-injection of the team context index is now part of the event contract, not an accident of the OpenCode plugin's per-step transform. The generated plugin's dedup guard prevents double-injection; adlc-skills-cli adapters without asession_compactmapping skip it until they add one. Pinned bytest_events_json_declares_session_compact.scripts/acceptance-test.sh— the canonical acceptance test (this repo's "Let's make a react todo list"): scratch-installs via adlc-skills-cli, configures a directives checkout, and assertsboot.shemits the full index (constitution, CDR rows, class boots, skills);--liveadds an opencode smoke check,--directives/--keepfor control..github/workflows/evals-nightly.yml— nightly full PromptFoo sweep (tiered eval model: static gates on every PR, live evals on PRs withOPENAI_API_KEY+ nightly on main; loud failure if the secret goes missing). Rationale: fork-PR skill-behavior changes get zero LLM-eval coverage at PR time — the nightly closes the gap.docs/testing.md— the two-directory/three-tier testing map (static gates vs grader unit tests vs live evals), the tiered model, and the known limit thattests/e2e/tests a re-implementation.docs/event-hook-contract.md— the.events.json+ boot-script contract, with the repo boundary drawn: this repo declares events and provides handler output; adlc-skills-cli owns and implements the injection side (dispatcher, plugins, compaction re-injection)..github/PULL_REQUEST_TEMPLATE.md+ issue templates (bug_report.md,skill_proposal.md) — PR template carries the baseline-failure section (skill changes), manual-test table, and AI disclosure; skill proposals demand the verbatim baseline transcript up front.diagnosing-team-skills(skills/team/diagnosing-team-skills/) — evidence-first diagnosis of the session-start chain (init-options → jq → boot.sh → artifact sync → injection side), routing injection bugs to adlc-skills-cli with outputs attached. Ships with EVAL-013 (check_diagnosing_evidence_first.py+ unit tests): a diagnosis without command output is a guess.- Token-budget enforcement (
tests/unit/test_playbook_integrity.py) — warn above the 500-line target, fail above the 800-line hard cap;architect-implement(1273 lines) andteam-repair(1134 lines) grandfathered in a shrink-onlyTOKEN_BUDGET_EXEMPTlist as tracked debt. - CONTRIBUTING additions — canonical acceptance-test section (with the pass condition and PR-evidence rule) and an "If you are an AI agent" checklist: search open+closed PRs, one problem per PR, run the full verification set, follow writing-skills' Iron Law, disclose model/harness/plugins, human-approved diff before submitting.
factory-init(skills/factory/factory-init/) — unified brownfield bootstrap orchestrator (5th Kind-A peer): one command drives the product, architecture, and change lifecycles end-to-end (init → clarify⭐ → implement → analyze/publish; track-sequential; per-layer skip on partial state) and emits the PDR↔ADR↔ChDR↔code coverage matrix at.adlc/coverage/coverage.md— feature-area pivot (union row-axis) + four traceability relations (PDR↔ADR, PDR↔code, ADR↔code, ChDR↔code) + family severity model + drift diff vs.adlc/coverage/history/. Owns the recurring cross-layer alignment sweep via--refresh. CDR excluded (team-level, external publish target) — final output recommendsfactory-learn//levelup-initinstead. Zero new leaf skills. (PDR-072, ADR-361)- factory-init eval criteria — binary grader
check_factory_init_matrix.py(matrix format integrity: pivot columns, four relations withCoverage: N%, layer-tagged + cited gap lines, Drift/Baseline section) with unit tests, pluscheck_sweep_layer_routingbranch incheck_factory_invariants.py(ADR-361 layer-tagged correction routing); wired intogoldset-factory.json+config.js.
Changed
- Mandated TDD gates in
factory-mission— the decoupled test/code split (capability #12 / Phase 5) now closes each leg with a mechanical gate: the RED gate runs the Test Agent's suite and requires ≥1 failing test (green-at-RED routes to SPEC_CORRECTION_NEEDED; a code-bearing step never proceeds on a vacuous suite), the GREEN gate blocks converge until the suite passes (failure loops back to thecodestep without consuming the converge circuit breaker). Exemptions narrowed to declared no-test-surface runs (tdd: false, docs/config-only steps, interactive mode). - SDO description audit — every skill description — all
SKILL.mddescriptions now lead with "Use when…" trigger conditions instead of workflow summaries (mission-brief routes subagents by descriptions; summaries measurably cause agents to follow the description instead of reading the skill body). 46 rewritten;writing-skillsanddiagnosing-team-skillswere authored compliant. - README restructured around skills gravity — two-loop framing (session loop + the software factory), factory promoted to a visible top-level section (ASCII outer-loop diagram restored, station-by-station list), gravity-ordered "What's inside" catalog (team-* first, factory second), superpowers-style TOC / Philosophy / When-something-goes-wrong / Contributing sections, fixed stale per-domain layout counts (architect 5→6, product 6→7, levelup 4→5, change 3→4; added missing factory/ and authoring/).
- Skill depth invariant enforced —
skills/mission-brief/→skills/mission/mission-brief/andskills/workspace/→skills/team/workspace/; the documented "exactly 2 levels" rule is now true and tested. - RELEASE.md — new "Security design" section (token-exposure posture of the release workflows, moved from auto-tag.yml comments; the workflow header now points to RELEASE.md).
- Untracked committed
__pycache__/*.pycfiles —.gitignorealready covered__pycache__/; the pre-rule files are removed from the index. - Deterministic-checks-first across the capture pipeline (EVAL-010):
levelup-clarifygains an enforceability gate (Phase 2b) — mechanical rules (fixed patterns, banned APIs, import/file-location shapes) promote to deterministic checks (action P: unit test / binary grader / pre-commit / lint / CI) before Accept is offered; only judgement calls become context rules.factory-learn's Maintenance route asks promote-to-check alongside build-to-delete.team-repairPhase 0 gains Check 8 (Deterministic Enforcement Coverage) — advisory[WARN]for mechanical rules lacking checks and skills lacking eval coverage; Phase 10 flags promotion candidates; a pre-existing dangling "Check 8" reference in Phase 3 is corrected to Check 7.evals-analyzesubclassifies specification failures — mechanical gaps route to grader/unit-test fixes, judgment gaps to/levelup-specifyCDRs. - EVAL-010 criterion + grader —
check_deterministic_first.pybinary grader (mechanical classification + deterministic check vehicle required; CDR-only mechanical fixes fail) with unit tests; wired intogoldset.md+goldset.json+config.js. - README factory outer-loop ASCII diagram — overview box-flow above the mermaid detail: factory-init as the brownfield on-ramp, decision skills before the Intent Gate, queue after it, learn → team-boot closing the context loop.
adlc-team-skills v0.28.0
Added
- Class Boots —
team-bootdecomposed into per-class boot skills:team-bootnow injects only the always-relevant layer (constitution titles, CDR index, Class Boots catalog, skills registry, MCP servers); the four record classes and tech selection load on demand through five new model-invoked skills, each pairing its index injection with decision capture (read-decisions and record-decisions as one loop):architect-boot(skills/architect/architect-boot/): injects the ADR index (.adlc/memory/adr/) when architecture work starts or a tech-stack/pattern decision emerges; captures via/architect-specify; routes tech-selection ADRs throughtech-radar-boot.product-boot(skills/product/product-boot/): injects the PDR index (.adlc/memory/pdr/) for product/feature scope, persona, and monetization work; captures via/product-specify.change-boot(skills/change/change-boot/): injects the published ChDR index (.adlc/memory/chdr.md) when past-change rationale matters (refactors of unfamiliar code, revert/hotfix analysis); captures via/change-init.levelup-boot(skills/levelup/levelup-boot/): CDR deep-dive — reads full context module bodies from team-ai-directives when a task matches CDR descriptors; captures via/levelup-specify. The compact CDR index stays inteam-boot(always-on native discovery).tech-radar-boot(skills/tech-radar/tech-radar-boot/): absorbstech-radar-context(renamed;scripts/+ 424-blipresources/radar.jsonmoved viagit mv) and adds decision-capture pairing — tech selections route to/architect-specifywith radar evidence./tech-radar-contextremains a documented deprecated alias.
- Class-boots contract suite (
tests/unit/test_team_class_boots.py): pins the five class boots (existence, frontmatter names, description capture-pairing, index sources, per-class searched lines, ledger integration, anti-fabrication) plus the Class Boots catalog across boot.sh/boot.ps1 and all six team-helpers templates.
Changed
- Lean
boot.sh/boot.ps1(skills/team/team-boot/scripts/): the inline PDR/ADR/ChDR index sections are replaced by a five-row Class Boots catalog; the always-on searched line is now_Searched N CDRs, M skills, J matched._(class indexes report their own_Searched N <class> records, K matched._lines when their boot is invoked); the Decision Capture section is compacted to one trigger line per class plus the Session Decision Ledger contract (full guidance lives in the class boots).boot.ps1gains the Decision Capture section it was missing (parity with boot.sh). - CDR index filter fix (
boot.sh/boot.ps1): the injected-index row filter now includesrule-*andconstitutionrows — previously onlyCDR-*/skill-*/example-*prefixes matched, silently dropping 16 of 34 entries (everycontext_modules/rules/module) from the session-start catalog. - Unified AGENTS.md managed-section template (
team-helpers.sh/team-helpers.ps1in team-repair, team-setup, team-skills): the managed section now embeds the Class Boots catalog and compact Decision Capture triggers, unifying three previously drifted contract variants (boot.sh, the helper template, and live AGENTS.md files). team-repairCheck 7 (skills/team/team-repair/SKILL.md): now validates the project AGENTS.md managed section includes the Class Boots catalog and the Decision Capture contract, not just theteam-bootdirective.- Boot contract tests (
tests/unit/test_team_boot_setup_flow.py): the ChDR-inline-injection tests are replaced with Class Boots catalog, per-class searched-line, and compact Decision Capture tests; radar path constants move totech-radar-boot/; the AGENTS.md test asserts the catalog.
adlc-team-skills v0.27.0
Added
factory-*Category of Orchestrator & Control-Plane Skills (skills/factory/): Creates the control-plane orchestration family for the repo, fully aligned with the "Tikal Solutions | Agentic SDLC Factory" architecture (deck slides 12 & 15).factory-mission(skills/factory/factory-mission/): Copied frommission-briefto serve as the tracker-integrated, TDD-decoupled execution-harness orchestrator.factory-product(skills/factory/factory-product/): Pure product lifecycle orchestrator (specify/init → clarify⭐ → implement → analyze).factory-architect(skills/factory/factory-architect/): Pure architecture lifecycle orchestrator (specify/init → clarify⭐ → implement → analyze).factory-learn(skills/factory/factory-learn/): Continuous improvement learning loop orchestrator (levelup + change + evals feedback + cleanup bot) targetingteam-ai-directives.factory-queue(skills/factory/factory-queue/): Control-plane intake and triage (PII scrubbing, AI advisory triage scoring, and label stamping) and milestones/epics generation.factory-review(skills/factory/factory-review/): Severity-ranked PR policy compliance reviews againstREVIEW.md(never auto-approves/merges, strictly advisory).- Shared References (
skills/factory/factory-mission/references/):executor.md: Common, lifecycle-agnostic DAG engine contract (config, resume, brief, steps, gates, circuit-breakers).tracker-integration.md: Tracker-agnostic integration layer sharing spec-kit's configuration model (.specify/taskstoissues-provider.yml) and normalizing GitHub, GitLab, Linear, and Jira with strict dry-run+confirm constraints.
adlc-team-skills v0.26.1
Added
- "How it works" + "The Basic Workflow" sections in README (
README.md): two new top-level sections, placed between "A note on context stuffing" and "Install", that surface the end-to-end arc before the install/reference walls —team-bootsession-start index injection (~hundred tokens, full rules pulled on demand) →team-setup/team-constitutionon unconfigured projects →mission-briefspec contract andspecify → plan → implement ↔ convergeloop (gates, circuit breaker, resume, audit trail) with universal skill scanning (this repo + superpowers + spec-kit + your own) →product-*/architect-*PDR/ADR compilation intoPRD.md/AD.md→evals-*binary Tier 1 + LLM Tier 2 graders with holdout/TPR/TNR/SLA, ending at a human-reviewed PR →levelup-specifyCDR capture back to the team repo →team-repair --build-to-deleterule pruning. "The Basic Workflow" is an 8-step numbered list with bolded skill names and a closing "skills trigger automatically — mandatory lifecycle, not suggestions" line. Modeled on the superpowers README's "How it works" / "Basic Workflow" structure. Tone matches the existing technical README; the collapsibleWorkflows<details>block andReferencetable are unchanged (they hold the detailed per-lifecycle chains; the new sections are the high-level summary). Documentation-only; PATCH bump perRELEASE.md.
adlc-team-skills v0.26.0
Added
-
change-*skill family — Change Decision Records from git history (skills/change/change-{init,clarify,publish}/): a new record type (ChDR) that mines the why behind how code came to be, recovered from commit messages + linked issue trackers rather than from current code patterns or the current session.change-initscans agit logwindow, auto-detects issue links (JIRA keys, GitHub/GitLab#NNN, MR!NNN, issue URLs), clusters commits by issue key into change stories, best-effort fetches issue context (GitLab via MCP, GitHub viagh, else link-only), and treats revert/fix chains as first-class negative knowledge.change-clarifyis the human gate (one-ChDR-at-a-time Accept/Reject/Defer) with a provenance check that rejects Decision claims lacking a cited commit SHA or issue URL (the context-poisoning circuit breaker).change-publishpromotes accepted ChDRs to.adlc/memory/chdr/and regenerates the boot-facing.adlc/memory/chdr.mdindex. Every Decision claim carries mandatory provenance; linkage-rate metric in the summary sets expectations about corpus quality (research: rationale density varies 85–99% on disciplined projects, far lower elsewhere). ChDRs publish to project-local memory, not team-ai-directives (they describe this repo's evolution and fail the levelup team-wide signal gate). Empirical foundation: CoMRAT (MSR 2025), DRMiner (ASE 2024), LaToza et al. (ICSE 2006), Ko et al. (ICSE 2007). -
team-bootinjects the ChDR index at session start (skills/team/team-boot/scripts/boot.sh,boot.ps1,SKILL.md): alongside the existing PDR/ADR indexes,team-bootnow reads.adlc/memory/chdr.mdand emits a## ChDR Indexsection withCHDR_COUNT, so published Change Decision Records are available to every session. The counts line is extended to_Searched N CDR, P PDR, A ADR, C ChDR entries, S skills, J matched._.team-discoverupdated to include ChDR matches. -
Eval coverage for the change family (
evals/promptfoo/graders/check_chdr_format.py,evals/promptfoo/tests/test_check_chdr_format.py,evals/promptfoo/goldset.md): new goldset criterion (EVAL-006) and binary grader asserting ChDR drafts contain required sections (Context/Decision/Consequences/Evidence), at least one commit SHA, an issue link or explicit "no linked issue" marker, and provenance on Decision claims. Follows CONTRIBUTING's "new skills ship with eval coverage" requirement. -
levelup-init/levelup-specify"When NOT to use" (skills/levelup/levelup-{init,specify}/SKILL.md): added a pointer to/change-initfor mining git history / issue-linked changes, keeping discovery-source routing unambiguous.
adlc-team-skills v0.25.1
Fixed
-
Node.js 20 runtime deprecation in GitHub Actions (
.github/workflows/*.yml): upgradedactions/checkout@v4→@v6,actions/setup-python@v5→@v6, andsoftprops/action-gh-release@v2→@v3so all workflows run natively on the Node 24 runtime instead of being forced onto it (removes the "Node.js 20 is deprecated" warning; GitHub deprecated Node 20 on 2025-09-19). -
Auto-Tag Release workflow fails on
git tag -a— "empty ident name not allowed" (.github/workflows/auto-tag.yml): the workflow created annotated tags (git tag -a) but GitHub-hosted runners have no git identity configured by default, so the tag push step died withfatal: empty ident nameand no release was created. Fixed by configuringuser.name/user.email(github-actions[bot] identity) before creating tags.
adlc-team-skills v0.25.0
Added
- Auto-tag release on PR merge (
.github/workflows/auto-tag.yml,RELEASE.md): new GitHub Actions workflow that runs on every push tomain, parses the## [X.Y.Z]headers fromCHANGELOG.md, and creates annotatedadlc-team-skills-v*tags for every new untagged version at the merge commit. Each pushed tag then triggers the existing Release workflow, which creates the GitHub release — no manual tagging needed after a PR merges. Multi-version merge commits get one tag per new CHANGELOG version. The workflow carriescontents: writebut only runs on push tomain(never onpull_request), so the elevated token is never exposed to untrusted PR code;test.ymlremainscontents: read. Versions older than the latest existing tag are deliberately skipped (historical gaps like0.1.0must still be tagged manually at their original commit).