agentsclimarketplace

Goto next milestone

Skill uHappyLogic/cairn/.agents/plugins/cairn/skills/goto-next-milestone

Activate an already-defined milestone — scans milestones/ for a defined-but-not-yet-active directory and updates milestones/README.md to point to it as the current milestone. Requires finish-current-milestone to have been run first (current pointer must be "none").From its SKILL.md

Install
npx -y skills add uHappyLogic/cairn --skill goto-next-milestone

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

3.6 KB, as published. Nobody here has run it

goto-next-milestone

Activates an already-defined milestone by updating milestones/README.md to point to it as the current milestone. The milestone directory must already exist (created by /define-milestone-goal). Run this after /finish-current-milestone has cleared the current pointer to "none".

Usage

/goto-next-milestone

No arguments. The milestone to activate is discovered automatically.

Workflow

1. Check prerequisites

Read milestones/README.md and find the line whose prefix is Current milestone:. If that line is not Current milestone: none (i.e. it still points to an active milestone path), stop and tell the user to run /finish-current-milestone first.

2. Find the candidate milestone

Read milestones/README.md and scan milestones/ to collect:

  • All directories matching milestone_<N>_<slug>/
  • All milestone dirs already listed in the ## Milestone History section (these are completed)

The candidates are directories that exist in milestones/ but do not appear in ## Milestone History.

  • Zero candidates: stop. Tell the user to run /define-milestone-goal first to create a milestone.
  • One candidate: confirm the path and title with the user, then proceed.
  • Multiple candidates: list them (number, slug, path) and ask the user which one to activate before proceeding. When deriving the number from the directory slug, strip leading zeros and treat it as an integer (e.g. milestone_01_foo → number 1).

3. Update milestones/README.md

In milestones/README.md, overwrite the Current milestone: line with:

Current milestone: `milestones/milestone_<number>_<slug>/`

Leave the ## Current Milestone heading, the ## Milestone History section, and all other content unchanged.

4. Commit the activation

Read and follow the shared commit procedure at ${CLAUDE_PLUGIN_ROOT}/shared/commit-procedure.md (run echo "$CLAUDE_PLUGIN_ROOT" if you need to resolve the path), carrying out its steps yourself. Supply it these two inputs:

  • PATHS — this skill's own change set: milestones/README.md (the file whose Current milestone: pointer it just overwrote).
  • SUBJECT — Milestone-activation: milestone_<number>_<slug>.

The shared procedure owns the path-scoped staging, the dirty-own-path no-op guard, and the commit; do not restate those mechanics here.

5. Confirm

On the success path — the commit in step 4 recorded the activation — print exactly one fixed terse status line and nothing else:

Milestone activated.

Do not add the activated milestone's path or title, or a next-step pointer; the committed diff and git log are the durable record.

If instead the step-4 dirty-own-path guard fired (the Current milestone: pointer was unchanged, so nothing was committed), do not print the terse line — print a single concise line stating that nothing changed and briefly why, e.g. No change — the pointer already named that milestone; nothing committed.

Rules

  • Do not run if the Current milestone: line in milestones/README.md is not none — always require /finish-current-milestone to have been run first.
  • Do not create any files or directories — the milestone directory must already exist.
  • Update milestones/README.md only — do not write the pointer into CLAUDE.md.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.