You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat\(session-flow\): rename show-options to /session-flow:recommend-skills with a frontmatter index of every skill - part 2 of 3 #11131
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Low
Uncertainty: Known
Flags: none
Blocked by: #11130
Understood: this is part 2 of 3 of #11122. It asks for a test of the skill index script, run under scripts/run-test-file.sh. The test covers one installed, one disabled and one not-installed skill. The script itself is presumably built in part 1 (#11130), so this part waits on it. Parts 1 and 3 (#11130, #11132) are sibling splits, not duplicates.
The work-resolve-issue lane did not start this issue: it needs a person to make it clearer first.
Reason: intent
Why, in the run's own words:
This part's only done-when item is a test for 'the index script', but that script does not exist on the default branch: plugins/session-flow/skills/recommend-skills/ holds only SKILL.md, context/ and evals/. Building it first means settling design questions that this issue, parent #11122 and the #7575 decision (D80, Q157, Q189, Q190) leave open. (1) Where does the script read not-installed skills from? #7575 says the script indexes 'installed, disabled, not installed' skills but names no source. One option is the marketplace checkouts that known_marketplaces.json lists (installLocation), as plugins/harness-ops/skills/inventory/scripts/inventory.py scan_disk does. A plugin whose source is a remote repository has no SKILL.md on disk there. (2) How does the script find installed skills? recommend-skills/context/candidate-ladder.md says rung 1 'is a reuse, not a reimplementation' of /harness-ops:inventory and 'Do not walk ~/.claude/plugins/cache directly'. A new session-flow script that reads the cache contradicts that, unless the issue says it replaces rung 1. Calling inventory.py instead needs the harness-ops plugin installed. (3) What counts as disabled? inventory.py reads only enabledPlugins in the user-scope settings.json. Do project and local scopes count, and does skillOverrides 'off' count? (4) Is building the script this part's work or part 3's, and where does it live (path, language, output shape)? Please answer (1) to (4), or record a decision, and this lane will build the script and its test.
What the run says it did not do:
The index script and its test under scripts/run-test-file.sh were not written: the design questions in reason are open.
This answers the lane's open questions (comment 6524617518). Agents decided them on evidence under standing direction §1; none changes the intent of #7575's D80 / Q157. The owner may overturn D1's handling of remote-source plugins. Nobody else holds #11122 or #11131 (Automation Lanes confirmed). The index script belongs to this part: part 1 (#11130) only renamed the skill and is closed, and part 3 (#11132) runs after parts 1 and 2 and consumes the index (split comment 6513995976, order=1>3,2>3).
D1, where not-installed skills come from. For each marketplace in known_marketplaces.json, read the checkout's .claude-plugin/marketplace.json.
Local-path entries resolve against the checkout's installLocation and are indexed per skill from SKILL.md frontmatter.
Remote-source entries become one plugin-level row: name, the description from marketplace.json, and skill: null. No plugin is dropped. The agent reads a shortlisted plugin's SKILL.md files at shortlist time, as Q157 already has it do. The script makes no network fetch, because bulk-fetching thousands of remote repositories is a host and API-budget risk.
A plugin in the cache uses its cached copy, not the checkout copy.
D2, location. There is no second enumerator. Add a --skills-index mode to plugins/harness-ops/skills/inventory/scripts/inventory.py (Python, JSON to stdout) and document it in inventory's SKILL.md. recommend-skills reaches it only through /harness-ops:inventory, never by path: candidate-ladder.md says rung 1 "is a reuse, not a reimplementation" and forbids walking the plugin cache directly. Rungs 2-3 and their disclosure stay the fallback.
D3, disabled.
A plugin's state is its enabledPlugins value, with local > project > user precedence, skipping a scope that holds a non-Boolean value.
With no entry at any scope, the plugin follows the marketplace entry's defaultEnabled, then plugin.json's, then true (settings reference, enabledPlugins; plugin manifest reference, defaultEnabled).
Managed settings are not read, the caveat inventory already carries.
skillOverrides does not apply to plugin skills. A personal or project skill set to "off" is disabled.
D4, shape.
One record per skill, with these fields: plugin (plugin@marketplace, or user/project for config-scope skills), skill, name, description, when_to_use, state (enabled | disabled | not-installed) and source (cache | checkout | marketplace-manifest | config-scope).
--exclude disabled,not-installed filters by state, per Q189.
Activity
github-actions commentedon Oct 30, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Low
Uncertainty: Known
Flags: none
Blocked by: #11130
Understood: this is part 2 of 3 of #11122. It asks for a test of the skill index script, run under
scripts/run-test-file.sh. The test covers one installed, one disabled and one not-installed skill. The script itself is presumably built in part 1 (#11130), so this part waits on it. Parts 1 and 3 (#11130, #11132) are sibling splits, not duplicates.Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Oct 30, 2026
Not admitted to the issue lane yet: blocker #11130 is not closed by a listed human or a merge.
melodic-automation-lanes commentedon Oct 30, 2026
The work-resolve-issue lane did not start this issue: it needs a person to make it clearer first.
Reason:
intentWhy, in the run's own words:
What the run says it did not do:
Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41066876379
To retry, answer the question in a comment whose first line is
**Decision recorded.**, then removeneeds-humanand addagent-readyagain.kyle-sexton commentedon Oct 30, 2026
Decision recorded.
This answers the lane's open questions (comment 6524617518). Agents decided them on evidence under standing direction §1; none changes the intent of #7575's D80 / Q157. The owner may overturn D1's handling of remote-source plugins. Nobody else holds #11122 or #11131 (Automation Lanes confirmed). The index script belongs to this part: part 1 (#11130) only renamed the skill and is closed, and part 3 (#11132) runs after parts 1 and 2 and consumes the index (split comment 6513995976,
order=1>3,2>3).known_marketplaces.json, read the checkout's.claude-plugin/marketplace.json.installLocationand are indexed per skill from SKILL.md frontmatter.skill: null. No plugin is dropped. The agent reads a shortlisted plugin's SKILL.md files at shortlist time, as Q157 already has it do. The script makes no network fetch, because bulk-fetching thousands of remote repositories is a host and API-budget risk.--skills-indexmode toplugins/harness-ops/skills/inventory/scripts/inventory.py(Python, JSON to stdout) and document it in inventory's SKILL.md. recommend-skills reaches it only through/harness-ops:inventory, never by path:candidate-ladder.mdsays rung 1 "is a reuse, not a reimplementation" and forbids walking the plugin cache directly. Rungs 2-3 and their disclosure stay the fallback.enabledPluginsvalue, with local > project > user precedence, skipping a scope that holds a non-Boolean value.defaultEnabled, then plugin.json's, thentrue(settings reference,enabledPlugins; plugin manifest reference,defaultEnabled).skillOverridesdoes not apply to plugin skills. A personal or project skill set to"off"is disabled.plugin(plugin@marketplace, oruser/projectfor config-scope skills),skill,name,description,when_to_use,state(enabled|disabled|not-installed) andsource(cache|checkout|marketplace-manifest|config-scope).--exclude disabled,not-installedfilters by state, per Q189.candidate-ladder.md's "installed but absent from enabledPlugins = not enabled" (such a plugin followsdefaultEnabled, D3).Done when
scripts/run-test-file.sh, covering one installed, one disabled and one not-installed skill.plugins/harness-ops/skills/inventory/scripts/test_skills_index.py, also covers:enabledPluginsentry followingdefaultEnabled--excludedropping disabled and not-installed recordsscripts/run-test-file.sh plugins/harness-ops/skills/inventory/scripts/test_inventory.pystill passes.bash plugins/skill-quality/scripts/check-skill.sh plugins/harness-ops/skillsexits 0.scripts/check-changelog-fragments.shpasses with a harness-ops fragment.