Skip to content

fix: make the generated skill defer to live CLI guidance - #48

Merged
kunchenguid merged 3 commits into
mainfrom
fm/tasksaxi-skill-minimal-stub-r1
Aug 23, 2026
Merged

fix: make the generated skill defer to live CLI guidance#48
kunchenguid merged 3 commits into
mainfrom
fm/tasksaxi-skill-minimal-stub-r1

Conversation

@kunchenguid

Copy link
Copy Markdown
Owner

Intent

Fix tasks-axi's skill-fragmentation problem: cut skills/tasks-axi/SKILL.md drastically to a minimal stub that defers to the CLI as the single source of truth, via the GENERATOR so the contract holds on every regeneration. Same minimal-stub pattern the captain approved for lavish-axi, applied family-wide.

The skill duplicates instructions the tasks-axi CLI already prints (help / subcommand / dashboard). Users install the skill once and never update it when they bump the npm package, so the baked copy goes stale. The skill already opens well and defers, but it also bakes a Commands index, a long Tips flag-detail section, and exact-syntax Workflow steps that mirror the CLI.

CRITICAL: fix the GENERATOR (src/skill.ts, via scripts/build-skill.ts / pnpm run build:skill), not just the current output. CI runs pnpm run build:skill -- --check and fails on drift. A future regeneration must not re-inflate the skill.

Keep frontmatter (name/description/metadata). Body only: what tasks-axi is (one or two lines), when to reach for it, and pointers telling the agent to get actual instructions from the CLI: npx -y tasks-axi (dashboard), npx -y tasks-axi --help, and npx -y tasks-axi --help. Remove the Commands index, the Tips flag-detail section, and exact-syntax duplication in Workflow.

Document the contract in tasks-axi AGENTS.md: the shipped skill stays minimal and defers to the CLI for all actual guidance (CLI output is the single source of truth); never re-duplicate CLI-owned instructions into the skill; prefer a pointer over restated detail.

The CLI itself is UNCHANGED: do not remove or shrink --help, subcommand, or dashboard output.

Do not merge. No Greptile on tasks-axi. Captain merges and decides the release.

What Changed

  • Simplified the generated tasks-axi skill to retain discovery metadata while directing agents to the live dashboard and CLI help.
  • Removed duplicated command, workflow, and flag guidance from the generator and generated skill without changing CLI output.
  • Updated tests and contributor documentation to enforce the minimal, CLI-deferring skill contract.

Risk Assessment

🚨 High: The change is otherwise well-bounded, but the generated body directly contradicts an explicit authoritative acceptance constraint and should not merge without human resolution.

Testing

Verified the generator emits the minimal CLI-deferring skill without drift, the focused skill tests pass, and the unchanged dashboard, top-level help, and command help remain available end to end. Initial invalid flag-order and external-cwd evidence attempts were discarded and repeated through supported interfaces.

Evidence: Regenerated minimal tasks-axi skill

Source: Regenerated minimal tasks-axi skill

---
name: tasks-axi
description: "Manage a task backlog through the tasks-axi CLI - add, list, show, start, and complete tasks; track blocked-by dependencies, structured holds, and a ready queue; prune and normalize a hand-editable backlog.md. Use whenever a task touches backlog or task state: filing or dispatching work, recording a PR or report on completion, finding dispatchable or held work, or trimming the Done list."
user-invocable: false
author: Kun Chen (kunchenguid)
metadata:
  hermes:
    tags: [tasks, backlog, planning, dependencies]
    category: productivity
---

# tasks-axi

Agent ergonomic task & backlog manager for the current workspace. Prefer this over hand-editing backlog.md for task state, dependency, or hold changes.

## When to use

Use tasks-axi whenever a task touches the backlog: filing or dispatching work, moving a task through queued -> in flight -> done, recording a PR url or report path on completion, tracking blocked-by dependencies, pausing dispatch with structured holds, finding dispatchable ready work or intentionally held work, or trimming the Done list.

Get every command, flag, and workflow from the live CLI - it is the single source of truth:

- `npx -y tasks-axi` - dashboard of the current backlog
- `npx -y tasks-axi --help` - global usage
- `npx -y tasks-axi <command> --help` - per-command usage

You do not need tasks-axi installed globally. If the CLI prints a follow-up starting with `tasks-axi`, run it as `npx -y tasks-axi ...` instead.
Evidence: Live CLI dashboard, top-level help, and subcommand help transcript

Source: Live CLI dashboard, top-level help, and subcommand help transcript

$ npx -y tasks-axi
bin: ~/.no-mistakes/worktrees/4ebfb4ced0b4/01M0RG9QSZ0FEVE7HREXJGB8A5/bin/tasks-axi.ts
description: "Agent ergonomic task & backlog manager for the current workspace. Prefer this over hand-editing backlog.md for task state, dependency, or hold changes."
in_flight: 0 tasks
queued: 0 tasks
public_followups: 0 obligations
done: 0 retained
help[3]:
  - Run `tasks-axi list` for the full backlog
  - Run `tasks-axi ready` to see unblocked queued work
  - "Run `tasks-axi add <id> \"<title>\" --start` to add and start a task"

$ npx -y tasks-axi --help
usage: tasks-axi [command] [args] [flags]
commands[19]:
  (none)=dashboard, add, list, show, start, done, reopen, update, rm, block, unblock, hold, unhold, ready, public-followup, mv, prune, render, setup
flags[4]:
  --backend <name> (after command), --file <path> (after command), --json (mutations: machine-readable result), --help, -v/-V/--version
examples:
  tasks-axi
  tasks-axi add homemux-h7 "owns HomeMux end to end" --kind secondmate --start
  tasks-axi list --state queued
  tasks-axi show homemux-h7 --full
  tasks-axi done sm-idle-handoff-q8 --pr https://github.com/o/r/pull/42
  tasks-axi block fm-x --by treehouse-lease-t4
  tasks-axi hold fm-x --reason "captain decision pending" --kind captain
  tasks-axi ready
  tasks-axi public-followup ready --json
  tasks-axi setup hooks

$ npx -y tasks-axi show --help
usage: tasks-axi show <id> [--full]
aliases: view
examples:
  tasks-axi show homemux-h7
  tasks-axi show homemux-h7 --full

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

⚠️ **Review** - 1 error
  • ⚠️ README.md:268 - The generator no longer embeds CLI help, but README.md still says the skill is generated from CLI description and help, while CONTRIBUTING.md:39 still directs regeneration after top-level help changes. Update both to describe the minimal CLI-deferring stub so contributor guidance does not preserve the retired anti-pattern.

🔧 Fix: Align skill documentation with minimal generator contract
1 error still open:

  • 🚨 src/skill.ts:58 - Intent requires the body to contain only what tasks-axi is, when to use it, and the three specified CLI pointers. This additional follow-up rewriting instruction (tasks-axi to npx -y tasks-axi ...) is CLI invocation guidance outside that closed list and contradicts the documented minimal-body contract at lines 26-30. Confirm whether this exception is intentional or remove it from the generator and generated skill.
✅ **Test** - passed

✅ No issues found.

  • pnpm exec vitest run test/skill.test.ts
  • pnpm run build:skill followed by pnpm run build:skill -- --check
  • pnpm exec tsx bin/tasks-axi.ts
  • pnpm exec tsx bin/tasks-axi.ts --help
  • pnpm exec tsx bin/tasks-axi.ts show --help
  • Captured the regenerated skill and live CLI dashboard/help outputs as reviewer-visible evidence.
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

kunchenguid and others added 3 commits August 23, 2026 16:44
Installed skills go stale when the npm package is bumped. Keep only
identity frontmatter plus pointers to live CLI help so regeneration
cannot re-inflate baked command docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
@kunchenguid
kunchenguid merged commit d9175b6 into main Aug 23, 2026
5 checks passed
yjuyjuy added a commit to yjuyjuy/tasks-axi that referenced this pull request Aug 24, 2026
…e no-mistakes gate to the shared action (#6)

* fix(cli): speed up standalone version queries (kunchenguid#34)

* perf(cli): answer --version through the axi-sdk-js fast path

Extract the package-version helper out of the heavy `src/cli.ts` graph into a
leaf `src/version.ts` (node builtins only), and rewrite `bin/tasks-axi.ts` to
answer a bare `-v`/`-V`/`--version` via `axi-sdk-js/fast-path`, dynamically
importing the command graph only for everything else. Bumps axi-sdk-js to
^0.1.10 for the `./fast-path` subpath export.

Version output is byte-identical and all other argv shapes still route through
`runAxiCli` unchanged. Guarded by a deterministic ESM loader module trace with
a negative control plus flag parity; no wall-clock assertion in CI.

* no-mistakes(document): Confirm fast-path docs and lint cleanliness

* no-mistakes: apply CI fixes

* chore(main): release tasks-axi 0.2.5 (kunchenguid#35)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix(cli): accept canonical Forgejo pull request URLs (kunchenguid#36)

* fix: accept canonical Forgejo pull request URLs as typed PR links

One classification seam (isPrUrl in src/pr-url.ts) now decides what
counts as a PR URL for prose link derivation, done/add --pr validation,
and public-followup pr_url deliverables: canonical GitHub
https://github.com/<owner>/<repo>/pull/<n> or Forgejo
https://<host>/<owner>/<repo>/pulls/<n> with a positive, no-leading-zero
number. Near misses (issue routes, singular/plural route confusion,
trailing slash, query/fragment, whitespace, userinfo, ports, encoded
separators, malformed segments) are rejected as --pr / pr_url values and
derive as doc links, never pr.

Fixes kunchenguid#19

* fix: validate pr links against the untrimmed input

Review follow-ups from pipeline run 01KZFA73D662DCSJ4HVWKW21QX: --pr values
and pr-kind addLinks are validated before any trim, so whitespace-padded
input is rejected instead of normalized. The literal NUL byte in
test/pr-url.test.ts is now written as a unicode source escape so git
treats the file as text; an embedded-space rejection case is added
alongside it.

* chore: remove committed no-mistakes evidence (now on orphan branch) (kunchenguid#39)

* chore: gitignore no-mistakes evidence dir (contributor safety) (kunchenguid#41)

* chore(agents): use @AGENTS.md import instead of CLAUDE.md symlink (kunchenguid#42)

Co-authored-by: Kun Chen <kun-1@kunchenguid.com>

* ci: require no-mistakes pipeline attestation in the gate (kunchenguid#45)

* ci: require no-mistakes pipeline attestation in the gate

* test: run the no-mistakes gate script on POSIX legs only

* ci: bind the no-mistakes attestation to the current PR head (kunchenguid#46)

* ci: migrate the no-mistakes gate to the shared composite action (kunchenguid#47)

Replace the inline gate `run:` block in
.github/workflows/no-mistakes-required.yml with a thin caller of
kunchenguid/no-mistakes/.github/actions/require-no-mistakes, pinned to an
immutable commit SHA. Enforcement logic and its tests now live upstream, so
this repository no longer carries a hand-copied script that can drift from
its siblings.

Drop `synchronize` from the pull_request trigger: the verdict is a pure
function of the PR body, and the pipeline pushes before it writes the
Pipeline section, so a push-triggered run pinned a failure to a head whose
body the same run was about to fix. This repo's ruleset is advisory with no
required status check, so dropping the trigger cannot wedge a merge.

Remove test/workflows/no-mistakes-gate.test.ts, which extracted and executed
the now-absent inline block, and point AGENTS.md at the shared action.

* fix: make the generated skill defer to live CLI guidance (kunchenguid#48)

* fix(skill): shrink SKILL.md to a CLI-deferring stub

Installed skills go stale when the npm package is bumped. Keep only
identity frontmatter plus pointers to live CLI help so regeneration
cannot re-inflate baked command docs.

Co-authored-by: Cursor <cursoragent@cursor.com>

* no-mistakes(review): Align skill documentation with minimal generator contract

* no-mistakes(document): Consolidate generated skill documentation

---------

Co-authored-by: Cursor <cursoragent@cursor.com>

* no-mistakes: apply CI fixes

---------

Co-authored-by: Kun Chen <3233006+kunchenguid@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Evelyn Scidmore <13389701+escidmore@users.noreply.github.com>
Co-authored-by: Kun Chen <kun-1@kunchenguid.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Chris Yuan <cyuan@hyfin.app>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant