Skip to content

refactor(app-control): move the control-skill contract to plugin level with feature folders and grouped ids #9579

Closed

Description

@kyle-sexton

Slice A1 of #9507, from poteto's draft (comment) amended to the owner's decisions.

Problem

Two contracts describe one thing: app-control's drive/reference/control-skill.md and testing's reference/feature-map.md define different feature sections.

Fix

  • git mv plugins/app-control/skills/drive/reference/control-skill.md plugins/app-control/reference/control-skill.md and repoint every consumer (drive/SKILL.md, plugins/app-control/README.md, docs/upstream/cursor-pstack.md).
  • Feature files become features/[<module>/]<feature>/README.md with H2 sections Parts, Sub-features, Entry points, Reset, Drive, Gotchas (#7581 Parts ruling). ## States goes. Every entry point ends driven or not driven: <reason>.
  • Index line: - <title> | features/<module>/<feature>/README.md | entry points: <n> | sources: <glob>[, <glob>].
  • A legacy features/<f>.md still resolves. Keep the "Writing the Capture section" block whole.
  • Drive's feature resolution ships in the same PR: features/<id>/README.md, then features/<id>.md, with <id> = <feature> or <module>/<feature>.
  • Evals grouped-feature-id-resolves and flat-legacy-feature-id-resolves. Fragment: app-control minor.

Done when

  • test -f plugins/app-control/reference/control-skill.md && test ! -e plugins/app-control/skills/drive/reference/control-skill.md exits 0.
  • rg -n 'skills/drive/reference/control-skill' plugins docs --glob '!**/CHANGELOG.md' prints nothing.
  • No ## States row in the contract; exactly six section rows (Parts, Sub-features, Entry points, Reset, Drive, Gotchas).
  • Drive's after evals are non-inferior to the before baseline.
  • python3 scripts/check-line-citations.py exits 0.

Blocked by: none.

Activity

  1. added theissue type on Oct 24, 2026
  2. github-actions commented on Oct 24, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Medium
    Complexity: Medium
    Uncertainty: Known
    Flags: none

    Understood: merge app-control's control-skill contract and testing's feature-map contract by moving control-skill.md to plugin level, switching feature files to features/[<module>/]<feature>/README.md with six fixed sections, and updating drive's feature-id resolution (grouped first, then legacy flat), with two new evals and a minor fragment. The issue is specific and its approach is clear. No likely duplicates found among the open issues. The eval non-inferiority check may need an attended or paid run, which admission handles separately.

    Automated triage, applied by the lanes App.

  3. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Oct 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: mediumReal value, no hard deadline; normal backlog flow.status: readyTriaged, unblocked, and fully specified; eligible to pick up.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Type

    Fields

    No fields configured for Task.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions