agent-submission-review-loop
Use whenever a coding agent submits a commit, branch, or PR in MCS-Agent-Builder, before calling the work done: review against the spec, Agent Plugins 1.0 manifest, security, and CI, send back task-step feedback, and repeat up to a retry limit.
- License 许可
- MIT
- 最近更新
- 2026-11-08
- Stars
- ★ 0
- Forks
- 3
01 前言 Front Matter
- name
- agent-submission-review-loop
- description
- Use whenever a coding agent submits a commit, branch, or PR in MCS-Agent-Builder, before calling the work done: review against the spec, Agent Plugins 1.0 manifest, security, and CI, send back task-step feedback, and repeat up to a retry limit.
03 SKILL.md 正文
Agent submission adversarial review loop
Nothing an agent submits counts as done until it passes this loop. Review the code, assuming a stub or a skipped check until the files prove otherwise.
Inputs
- The submission: repo, branch, head SHA, PR number if any.
- The spec: the task text plus repo docs that name the target (
README.md,CLAUDE.md,knowledge/frameworks/manifest-1.0.md). - The manifest spec: Agent Plugins 1.0.0 schemas under
schema/, plusschema/grokbot-extension.schema.json. - Retry limit: default 2 send-backs, then escalate to the user.
Each round
- Pin the head. Record the head SHA. Review only that SHA, and diff it against the base branch.
- Completeness vs spec. Read the code. FAIL a main path that contains TODO, FIXME, stub, placeholder, or "not implemented" markers;
UNSUPPORTED,NOT_CONFIGURED, or throw-only handlers; empty bodies; hardcoded or mock data returned as real; simulated calls where the spec requires a real API; missing error handling; manifest wiring that does not match the code; or tests that only exercise mocks. Grade against the level the spec asked for. - Manifest check. Run the check in the next section.
- Security. Rate each finding high, medium, or low, with file:line evidence. Cover secrets, shell and path injection, auth flows, permission scope, and
npm auditwhennode_modulesor the lockfile can be audited. - CI. Read the runs on the head SHA. This repo's manifest script is
npm run validate:manifests. There is nonpm run gatescript and no.github/workflows/manifests.yml. Thecijob in.github/workflows/ci.ymlpins Node 22 (node-version: '22'), installs withnpm ci --legacy-peer-deps, and runsnpm run validate:manifestswith no--if-presentin the Validate manifests step.enginesis>=20. There is no Node 20 job;npm run test:unitneeds Node 22 fornode --experimental-strip-types. If that job is absent on the head, run the unit tests andnpm run validate:manifestslocally and say that CI was not present. - Verdict. PASS means no completeness FAIL in the requested scope, a valid manifest, no high or medium security finding, and CI green or a documented reason it is absent. Otherwise SEND BACK.
Manifest 1.0 check
Full checklist: knowledge/frameworks/manifest-1.0.md. Platform kits: knowledge/research/agent-plugin-test-kits.md.
- Run
npm run validate:manifests. It loadsschema/vendor/plugin.schema.json,schema/vendor/mcp.schema.json, andschema/grokbot-extension.schema.json(Ajv 8.17.1). Record those paths and the commit SHA that last changed them (schema/PROVENANCE.json). plugin.json.$schemais exactlyhttps://agent-plugins.org/schemas/1.0.0/plugin.schema.json.nameis 1-64 characters (a-z0-9.-, no leading, trailing, or doubled-or.) and equals the folder name. Top-level keys are only$schema, name, version, description, author, homepage, repository, license, keywords, extensions. No secrets.extensions["com.grokbot"]. Present and schema-valid on the default profile (emit,manifest validate, andnpm run validate:manifests).kindis in the schema enum. Thespecfile exists and names each capability.approval.requiredistrue.secretsPolicy.plaintextToAgentisfalse.kind: secret-syncrequiressecretsPolicy.direction: write-only. Generated Copilot Studio packages usekind: channel, capabilitymessaging,runtimes.core: node-mcp-stdio, andlevel: 0. Alevelabove 0 is a FAIL unless the latest well-formed| L<n> | pass|fail|failed | <YYYY-MM-DD> | <sha> |row acrossCONFORMANCE.mdandROADMAP.mdcombined ispass.passandfailmatch without case, andfailedcounts as fail. A| L<n> |row that is not that shape (FAILING, an extra column, a sha of-, or a date that is not a calendar day) counts as not-pass. The row must be outside CommonMark fences (a fence closes only on the same character at a length at least the opener), 4-space indented code, and HTML comments, and the date must not be in the future (app/lib/agent-plugins/validate.js:419-501).homepage,repository, andauthor.urlthat embed userinfo or a credential query key areidentity-secret(app/lib/agent-plugins/validate.js:543-551). Secret-shaped values inagent-model.jsonaremanifest-secret(app/lib/agent-plugins/validate.js:686-698). Thecijob runsnpm run validate:manifestswith no--if-present. The import profile treats a missing extension as the warningextension-missing(app/lib/agent-plugins/validate.js:30and:704-711). Skills stay atapp/lib/agent-plugins/validate.js:371-406.mcp.json.$schemais exactlyhttps://agent-plugins.org/schemas/1.0.0/mcp.schema.jsonand its version matchesplugin.json. Top-level keys are only$schemaandmcpServers. The stdiocommandis one token.cwdstays under./,${PLUGIN_ROOT}, or${PLUGIN_DATA}.argsthat point at the plugin resolve to files that exist, andfs.realpathSyncmust keep the target inside the plugin (path-escapewhen a symlink leaves the root,app/lib/agent-plugins/validate.js:113-147).envhas noPLUGIN_ROOT,PLUGIN_DATA, or secrets. Remote URLs are HTTPS except loopback HTTP, with no user info and no fragment. Validate rejects credential query parameter names and*-keyheaders (app/lib/agent-plugins/validate.js:169-190). Emit drops any remote URL that has a query string, and it keeps only the public header allow-list inapp/lib/agent-plugins/generate.js:11-19. A missingmcp.jsonis an error on the default profile and the warningmcp-missingon the import profile.- Skills. On the default profile, at least one
skills/<skill>/SKILL.mdis required. Each skill file has frontmatter.nameis kebab-case, 1-64 characters, and equals the folder name.descriptionis 1-1024 characters. Missing skills areskill-missing(an error on the gate, a warning onmanifest import). Bad frontmatter staysskill-frontmatteron both profiles (app/lib/agent-plugins/validate.js:371-406). - Wiring. For a package this builder emitted,
core/dist/index.jsis the stdio server andagent-model.jsonis the packaged agentspec slice.tools/listmust match the tools inapp/lib/agent-plugins/mcp-stdio-server.js. Thecom.grokbotcapabilitymessagingis that conversational contract, not a live Copilot Studio call. - Record the result. Write
manifest: validor the violations as file plus JSON pointer. A manifest PASS does not offset a completeness FAIL.
This repo allows unit tests under app/lib/__tests__/. Do not apply another repo's ban on test files here.
Send back
Write a numbered list of steps the agent can run. Each step names the file, the function or symbol, the change, and the done condition. Group steps under Completeness, Manifest, and Security, highest severity first. Post one comment per round.
Deliver it on the agent's channel: a PR comment for a Copilot cloud agent, a follow-up for a Cursor cloud agent, or an agent message for a peer bot. Wait for a new head SHA and review that SHA. At the retry limit, stop and report the outstanding steps.
Check-in gate
Before round N+1, confirm the agent acknowledged the send-back and that each prior step is approved with evidence or rejected. If the agent stalled, count the round and escalate at the limit.
Done
Report verdict, round count, head SHA, manifest result, findings fixed, findings outstanding, and CI state with a link. Do not merge from this loop. Do not call the work finished without a PASS on the current head SHA.
04 同仓库更多 Skills
order-status
Read the packaged Copilot Studio agent definition, including messaging topics and boundaries, from the local plugin.
level-pass
Read the packaged Copilot Studio agent definition, including messaging topics and boundaries, from the local plugin.
level-pass
Read the packaged Copilot Studio agent definition, including messaging topics and boundaries, from the local plugin.
level-not-passing
Read the packaged Copilot Studio agent definition, including messaging topics and boundaries, from the local plugin.
level-pass
Read the packaged Copilot Studio agent definition, including messaging topics and boundaries, from the local plugin.
level-pass
Read the packaged Copilot Studio agent definition, including messaging topics and boundaries, from the local plugin.