This repository is ready to import as a Cursor Team Marketplace. It packages a human-controlled self-improvement loop as one Agent Plugin:
- Agent executes a task — Base Skill.
triage-github-issueclassifies one issue, applies one readiness label, posts a versioned evidence trail, and invites human feedback. - Human reviews the output and provides feedback. A reaction, reply, or label correction becomes useful evidence; feedback that explains the repository convention or decision rationale teaches the Agent the most.
- Agent reviews the feedback and improves itself — Self-improvement Skill.
improve-github-issue-triageruns on a schedule, compares the original triage decision with the human response, and proposes at most one focused change to the base Skill through a draft pull request.
The improvement loop stays human-controlled: feedback is evidence, not an instruction; the outer Skill never edits the default branch or merges its own proposal.
.
├── .cursor-plugin/
│ └── marketplace.json
├── assets/
│ ├── self-improving-agent-loop.png
│ └── self-improving-agent-loop.zh-CN.png
├── plugins/
│ └── self-improving-github-triage/
│ ├── plugin.json
│ └── skills/
│ ├── triage-github-issue/
│ │ └── SKILL.md
│ └── improve-github-issue-triage/
│ ├── SKILL.md
│ ├── references/
│ └── scripts/
└── scripts/
└── validate_marketplace.py
-
Replace
Your Teamin.cursor-plugin/marketplace.jsonwith the organization or team name shown to users. -
Run the validator:
python3 scripts/validate_marketplace.py
-
Commit this directory as the root of a GitHub repository. For a private repository, grant the Cursor GitHub App read access.
An administrator performs this once:
- Open the Cursor Dashboard and go to Plugins → Team Marketplaces.
- Select Add Marketplace and Import from Repo.
- Enter this repository's GitHub URL and review the discovered
self-improving-github-triageplugin. - Choose the allowed groups and distribution policy:
- Required for automatic installation across the selected team;
- Default On when users may opt out;
- Default Off when installation should be optional.
- Enable Auto Refresh if the Cursor GitHub App can read the repository, then save.
Users can then find the plugin in Customize, install it at project or user scope when it is optional, and invoke the two Skills by name.
Marketplace installation distributes the Skills; it does not grant GitHub permissions or create automations.
Required on the machine or worker that runs either Skill:
- Python 3 for the read-only feedback collector;
- GitHub access through Cursor's configured integration or an authenticated
ghCLI; - permission to read issues and history; the inner Skill additionally needs issue/label/comment write permission;
- branch and draft-PR permission in this Marketplace source repository for the outer loop.
Configure the issue-open automation in each consumer repository. Its prompt should invoke triage-github-issue, supply the repository and issue number from the trigger, and prohibit implementation, closing, or pull-request creation. Record the authenticated GitHub posting login; the outer loop must use the same value as --triage-login.
Run the scheduled improvement automation from this Marketplace source repository, not from a consumer repository and never from Cursor's installed-plugin cache. Use the template bundled at:
plugins/self-improving-github-triage/skills/improve-github-issue-triage/references/scheduled-run.md
Fill in:
- the consumer repository that contains triage feedback;
- this Marketplace source repository;
- the base Skill source path
plugins/self-improving-github-triage/skills/triage-github-issue/SKILL.md; - the trusted triage identity and maintainer logins;
- the lookback window.
After a human merges an accepted improvement PR, bumping the Agent Plugin patch version allows Marketplace refresh to distribute the revised Skill to the team.
Keep these versions synchronized for a released change:
plugins/self-improving-github-triage/plugin.json;- the matching plugin entry in
.cursor-plugin/marketplace.json.
The base Skill carries its own decision-marker version separately. That version is incremented whenever behavior changes so historical feedback can be attributed to the instructions that produced it.
