Skip to content

perf(session-flow): trim skill descriptions under 500 chars (part of #4661) - #4718

Merged
cursor[bot] merged 1 commit into
mainfrom
cursor/4661-session-flow-descriptions-37e9
Sep 28, 2026
Merged

cursor[bot] merged 1 commit into
mainfrom
cursor/4661-session-flow-descriptions-37e9

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Part of #4661

Summary

Trims 11 session-flow skill descriptions to ≤500 chars (listing 9,302 → 6,123). Keeps quoted triggers and nearest-sibling boundaries. Does not close #4661 — other plugins still need their own trim PRs.

session-flow → 0.38.3.

Test plan

  • skill-description gate: 11 checked, 0 failed (per implementer)
Open in Web Open in Cursor 

#4661)

Eleven of session-flow's 13 listed skills ran over 500 description
characters. Each keeps its quoted triggers and nearest-sibling boundary
and drops scope the body already carries. check-listing-budget.sh on the
plugin goes from 9,302 to 6,123 characters. show-options leaves the
description-cap baseline, now under 1,024 codepoints.

Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR body contract — issue linkage

This PR body does not yet satisfy the issue-linkage contract:

  • Missing a "## Fix" section. State the concrete change and how it addresses the problem.
  • Missing a "## Verification" section. Record concrete evidence the change works (commands, gates, output).
  • Missing a "## Related" section. List related PRs, ADRs, or decision-log entries this PR does not close.
  • Negated closing reference ("close perf(skills): trim the longest skill descriptions in the heaviest plugins #4661" (trigger "not")). GitHub's linkage parser ignores the surrounding words, so this still registers a closing reference and still auto-closes the issue when this PR merges. Remove the closing keyword and use "Refs: #N" (or "Relates to: #N") on its own line instead.
  • Missing a native closing keyword (Closes/Fixes/Resolves #N). If this PR references an issue it must not close, put "Refs: #N" (or "Relates to: #N") on its own line. If it relates to no GitHub issue at all, state "No linked issue" (or "No related issue:") in the body instead.

Edit the body and this comment updates itself on the next run.

@cursor
cursor Bot marked this pull request as ready for review September 28, 2026 00:16
@cursor
cursor Bot merged commit 9c4d776 into main Sep 28, 2026
32 checks passed
@cursor
cursor Bot deleted the cursor/4661-session-flow-descriptions-37e9 branch September 28, 2026 00:24
cursor Bot pushed a commit that referenced this pull request Sep 28, 2026
…t of #4657) (#4774)

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
Part of #4657

## Summary

Trims planning's listed skill descriptions to 500 characters or fewer.
Next plugin in #4657's per-plugin trim order after session-flow (#4718),
docs-hygiene, and claude-ops. Does not close #4657; other plugins still
need their own trims.

## Fix

- Eight descriptions rewritten: `audit-answers`, `design-handoff`,
`design`, `devils-advocate`, `draft-goal-condition`, `prd`,
`questionnaire`, and `wayfind`. Each leads with its use case, keeps
every single-quoted trigger phrase, and names its nearest sibling.
- `interview` (969 chars) deliberately untouched —
`tests/interview-defenses.test.sh` pins its whole frontmatter by digest.
- planning 0.44.8 → 0.44.10 (#4278 took 0.44.9 on main).

| Measure | Before | After |
|---|---|---|
| `check-listing-budget.sh plugins/planning/skills` aggregate | 7,738 |
5,454 |
| Listed skills over 500 chars | 9 | 1 (`interview`, pinned) |

## Verification

- `bash scripts/check-changed-skills.sh origin/main`: exit 0.
- `check-skill.sh plugins/planning/skills` with
`CHECK_SKILL_BASE_REF=origin/main`: every skill PASSES; no dropped
triggers.
- `bash plugins/planning/tests/interview-defenses.test.sh`: PASS=153
FAIL=0.
- `scripts/check-changelog-parity.sh --check-bump origin/main` passes;
markdownlint clean.

## Related

- #4657 (parent) and #4661 (per-plugin trims child)
- #4718 (session-flow) and #4555 (discipline)
<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-ab53da24-b89d-4314-a060-0da474e837e9?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-ab53da24-b89d-4314-a060-0da474e837e9&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
cursor Bot pushed a commit that referenced this pull request Sep 28, 2026
…t of #4657) (#4774)

<!-- CURSOR_AGENT_PR_BODY_BEGIN -->
Part of #4657

## Summary

Trims planning's listed skill descriptions to 500 characters or fewer.
Next plugin in #4657's per-plugin trim order after session-flow (#4718),
docs-hygiene, and claude-ops. Does not close #4657; other plugins still
need their own trims.

## Fix

- Eight descriptions rewritten: `audit-answers`, `design-handoff`,
`design`, `devils-advocate`, `draft-goal-condition`, `prd`,
`questionnaire`, and `wayfind`. Each leads with its use case, keeps
every single-quoted trigger phrase, and names its nearest sibling.
- `interview` (969 chars) deliberately untouched —
`tests/interview-defenses.test.sh` pins its whole frontmatter by digest.
- planning 0.44.8 → 0.44.10 (#4278 took 0.44.9 on main).

| Measure | Before | After |
|---|---|---|
| `check-listing-budget.sh plugins/planning/skills` aggregate | 7,738 |
5,454 |
| Listed skills over 500 chars | 9 | 1 (`interview`, pinned) |

## Verification

- `bash scripts/check-changed-skills.sh origin/main`: exit 0.
- `check-skill.sh plugins/planning/skills` with
`CHECK_SKILL_BASE_REF=origin/main`: every skill PASSES; no dropped
triggers.
- `bash plugins/planning/tests/interview-defenses.test.sh`: PASS=153
FAIL=0.
- `scripts/check-changelog-parity.sh --check-bump origin/main` passes;
markdownlint clean.

## Related

- #4657 (parent) and #4661 (per-plugin trims child)
- #4718 (session-flow) and #4555 (discipline)
<!-- CURSOR_AGENT_PR_BODY_END -->

<div><a
href="https://cursor.com/agents/bc-ab53da24-b89d-4314-a060-0da474e837e9?cursor_ref=pr_footer&cursor_cta=open_in_web"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-web-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-web-light.png"><img
alt="Open in Web" width="114" height="28"
src="https://cursor.com/assets/images/open-in-web-dark.png"></picture></a>&nbsp;<a
href="https://cursor.com/background-agent?bcId=bc-ab53da24-b89d-4314-a060-0da474e837e9&cursor_ref=pr_footer&cursor_cta=open_in_cursor"><picture><source
media="(prefers-color-scheme: dark)"
srcset="https://cursor.com/assets/images/open-in-cursor-dark.png"><source
media="(prefers-color-scheme: light)"
srcset="https://cursor.com/assets/images/open-in-cursor-light.png"><img
alt="Open in Cursor" width="131" height="28"
src="https://cursor.com/assets/images/open-in-cursor-dark.png"></picture></a>&nbsp;</div>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
kyle-sexton added a commit that referenced this pull request Sep 30, 2026
…ne descriptions under 500 chars (#5422)

No related issue: this PR only partly addresses #4661, which stays open
(see below).

Refs #4661

`Refs`, not `Closes`: #5288 (which owns pruning
`docs/out-of-scope/skill-listing-500-char-exceptions.md`, part of the
issue's checklist) is still open and that file is still on
`origin/main`. The issue stays open until that lands.

## Summary

Four listed skills had `description` plus `when_to_use` over 500
characters after the map-* audit remediation (#5392) landed on main:
`architecture:map-landscape` (507), `improvement:find` (998),
`claude-config:unhobble` (537) and `discipline:do-your-research` (512).
Each is now 500 or fewer, whitespace-normalised. Bodies, names and
invocation settings are unchanged. The other five architecture skills
this PR first trimmed are already at or under 500 on main, so their main
text is kept.

Trigger phrases lost to fit the cap (each `check-skill.sh` WARN, all
listed here):

- `architecture:map-landscape`: `chart our repositories` (`map our
landscape` carries the intent).
- `improvement:find`: `find improvements` and `highest-impact
improvement` (`improvement sweep` and `where is the highest-value work`
carry the intent). The other seven quoted triggers, `instrument this`,
the unattended-mode mention and all five Skip-when routes are kept.
- `claude-config:unhobble` and `discipline:do-your-research`: no quoted
trigger lost.

## Fix

- `architecture:map-landscape`: drop one redundant trigger phrase
(`chart our repositories`).
- `improvement:find`: 998 to 498 characters. Reason clauses and the
evidence-source parenthetical are cut; `where is the highest-value
work`, `what would move the needle` and `run an improvement scan` are
restored, matching the eval prompt in `evals/evals.json`.
- `claude-config:unhobble`, `discipline:do-your-research`: trimmed to
500 or fewer.
- Patch bumps (architecture 0.15.1 above main's 0.15.0, improvement
0.1.17, claude-config 0.53.5 above main's 0.53.4, discipline 0.15.6)
with a CHANGELOG entry each that names the dropped triggers.

## Verification

Aggregate from `check-listing-budget.sh` over the four touched skills
roots
(`plugins/{architecture,improvement,claude-config,discipline}/skills`,
38 listing-eligible skills):

| | aggregate chars | largest entry |
|---|---|---|
| before (main at 904a631) | 18,426 | 998 (`improvement:find`) |
| after (this PR on that base) | 17,845 | 499 |
| after, merged with current main | 18,547 | 838
(`claude-config:audit-instructions`) |

The last row rises because main's claude-config 0.53.3 (a separate
change) added routing clauses that put `audit-instructions` (838),
`audit-permission-state` (677) and `audit` (623) over 500. This PR does
not touch them; they still block the issue's "each touched plugin's
listed descriptions are 500 chars or fewer" criterion for claude-config,
another reason the issue stays open.

Per-skill `description` + `when_to_use` length after (upper bounds where
the measure counts YAML quote characters): map-landscape 482,
improvement:find 498, unhobble 499, do-your-research 499.

Checks run on the merged head:

- `bash scripts/check-changelog-parity.sh --check-bump origin/main` and
`--check-order`: pass
- `bash scripts/validate-plugins.sh`: pass
- `bash scripts/check-changed-skills.sh origin/main`: the four touched
skills pass, 0 errors. Warnings are only the dropped triggers listed
above.
- `bash scripts/check-purged-em-dashes.sh --check`: no em dashes
- `markdownlint-cli2` on the three changed CHANGELOGs: 0 issues

## Related

- #4657 (parent), #5288 (removes the exceptions ledger), #5258, #4718,
#5392
- Not covered here: other listed skills still over 500 outside the table
plugins, for example `fleet:reach` (1,112), `testing:audit`,
`attribution:audit`, `bugs:scan`, and the `animation`, `pixel-art`,
`playbooks`, `songwriting` and `wizard` skills. They are not trimmed in
this PR; #4657 stays open for them.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

perf(skills): trim the longest skill descriptions in the heaviest plugins

2 participants