Skip to content

fix: use proper SKILL.md folder format for plan-tasks skill - #4

Merged
c0d3ster merged 1 commit into
mainfrom
fix/plan-tasks-skill-format
Aug 1, 2026
Merged

fix: use proper SKILL.md folder format for plan-tasks skill#4
c0d3ster merged 1 commit into
mainfrom
fix/plan-tasks-skill-format

Conversation

@c0d3ster

@c0d3ster c0d3ster commented Aug 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • Fix /plan-tasks: it was never actually discovered by Claude Code, since skills require a named folder with SKILL.md inside (with name/description/disable-model-invocation frontmatter), not a flat .md file directly under .claude/skills/. This was left uncommitted from an earlier incomplete migration off the old .claude/commands/ format.
  • Fix plan.sh for Windows: set MSYS_NO_PATHCONV=1 so Git Bash doesn't mangle the --add-dir path argument, and reorder args to put the prompt before flags.
  • Update README references from the stale .claude/commands/plan-tasks.md path to .claude/skills/plan-tasks/SKILL.md, and sync the quoted skill body with the actual current content.

Test plan

  • Confirmed /plan-tasks resolves via the Skill tool with the new SKILL.md in place (it was showing up as available throughout this session, unlike the old flat file)

🤖 Generated with Claude Code

The flat .claude/skills/plan-tasks.md was never actually discovered by
Claude Code as a skill - skills need a named folder with SKILL.md
inside, with frontmatter (name, description, disable-model-invocation).
This was left uncommitted from an earlier incomplete migration off the
old .claude/commands/ format.

Also:
- fix plan.sh: set MSYS_NO_PATHCONV=1 so Git Bash on Windows doesn't
  mangle --add-dir's path argument, and reorder args to put the prompt
  before flags.
- update README references from the old .claude/commands/plan-tasks.md
  path to .claude/skills/plan-tasks/SKILL.md, and sync the quoted
  skill body with the actual current content.
@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@c0d3ster, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 15 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 0cdf0abc-ec1a-4dbb-a8eb-b0b2f62bc805

📥 Commits

Reviewing files that changed from the base of the PR and between 1261337 and 1f564a3.

📒 Files selected for processing (3)
  • .claude/skills/plan-tasks/SKILL.md
  • README.md
  • plan.sh

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@c0d3ster
c0d3ster merged commit cf0818e into main Aug 1, 2026
1 check passed
@c0d3ster
c0d3ster deleted the fix/plan-tasks-skill-format branch August 1, 2026 18:00
c0d3ster added a commit that referenced this pull request Aug 7, 2026
* feat: fresh-subprocess-per-task execution model for overnight.sh

Task #2. overnight.sh previously ran one continuous claude -p session
across a whole repo's TASKS.md, so context (and cache-read cost)
compounded across every task in a run -- confirmed against the
2026-08-06 c0d3ster run that hit its usage limit at 42.8M cache-read
tokens / $16.61 after just 2 tasks in one session.

Restructures the loop in overnight.sh to dispatch one fresh claude -p
subprocess per open task, plus one more for end-of-run housekeeping:

- split_tasks() parses TASKS.md's Agent-Ready/Verify/Research sections
  into per-task blocks, computing each task's effective stack (own tag
  or inherited) so --stack/--stop-after/--limit can filter in bash
  before any subprocess launches, instead of asking a mega-session to
  self-filter.
- Stacked tasks read predecessor context from docs/stack-notes/<stack>.md
  in the target repo (append-only, one entry per task: decisions,
  interfaces/exports, deviations, and its own branch name) instead of a
  raw diff/commit dump. resolve_base_branch() resolves which branch a
  task builds on -- the stack's latest branch this run, or the last
  Branch: line in stack-notes when resuming a stack from an earlier run.
- Each task subprocess reports a TASK_RESULT: #<n> status=... line at
  the end of its final message; overnight.sh collects these across the
  run and feeds them to the housekeeping subprocess as its starting
  point (housekeeping still confirms real PR/branch state via git/gh
  before trusting it).
- --override-prompt now explicitly bypasses the dispatch loop for a
  single one-off session, same as before.
- logs/ keeps its existing per-repo-per-day file layout (task #4 owns
  splitting those further); stats/<repo>.json now also tracks
  cache_read/cache_creation token totals, needed to judge whether this
  actually keeps cache-read volume down per the task's NEEDS HUMAN gate.

CLAUDE.md and README.md updated to document the new execution model,
the stack-notes/TASK_RESULT contracts, and updated stats.sh's rollup
to match.

NEEDS HUMAN: this needs the supervised trial run specified in task #2's
acceptance criteria before it's adopted as default -- a --limit 2 run
on a low-stakes repo across at least two different stacks, comparing
total_cache_read_tokens in stats/<repo>.json against the 42.8M baseline
above. Don't skip it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: address CodeRabbit review findings on PR #24

- split_tasks(): an untagged leading task (no [stack: x], no predecessor
  in file order) now defaults to "solo" instead of an empty stack name,
  which previously produced "This task starts stack \"\"" prompts and a
  docs/stack-notes/.md path.
- dispatch(): capture claude's own exit status via PIPESTATUS[0] instead
  of the trailing tee's, and return it. run_repo's task loop now aborts
  the repo's run after 2 consecutive dispatch failures instead of
  ploughing through every remaining task the same way (e.g. an auth
  error or a missing format-stream.jq); the override-prompt and
  housekeeping call sites surface a warning on failure too.
- Anchor the TASK_RESULT branch= extraction to the structured field
  (^TASK_RESULT: #<n> status=... branch=...) instead of a greedy match
  that could pick up a literal "branch=" inside the free-form note
  field, and verify the reported branch actually exists locally before
  recording it as a stack's next base.
- Document Bash 4.3+ as a requirement (local -n namerefs, local -A
  associative arrays) and switch every script's shebang to
  /usr/bin/env bash.
- README: correct stack-notes ownership -- the task subprocess creates
  and appends its own entry, overnight.sh only reads it.

Task #2.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix: address second round of CodeRabbit findings on PR #24

- Record the second failed dispatch's stats (update_stats) before
  aborting on 2 consecutive failures, not just discarding it.
- Anchor TASK_RESULT validation to the current task's own #<n> before
  trusting it for run_summary or a stack's next base branch, instead of
  accepting any TASK_RESULT line regardless of which task number it
  names -- a stale or malformed one now falls back to the same
  synthesized status=unknown line a missing TASK_RESULT would produce.

Task #2.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
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