feature-request
Manage feature request intake, normalization, triage, queue operations, and API-only lifecycle workflows.
- License 许可
- MIT
- 最近更新
- 2026-09-18
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- feature-request
- description
- Manage feature request intake, normalization, triage, queue operations, and API-only lifecycle workflows.
02 资源文件 2
- 参考文档SOURCE.md178 B
- 参考文档TRUST.auto.yaml2.2 KB
03 SKILL.md 正文
Skills (Agent Task Catalog)
This file is the repository's downstream skill registry. Each section is an actionable skill
with a deterministic flow, but normative agent semantics live only in agent/contract.yaml.
Tool schemas, scopes, capabilities, ownership, approvals, errors, side effects, and retry rules
must be referenced or mechanically projected from that Contract rather than redefined here.
Agent Contract 1.1.0 names get_account_capabilities as the bootstrap tool. The repository now
implements its exact 30-tool projection, while MCP production conformance is pending
until the immutable MCP release, PostgreSQL concurrency, deployment, observation, and real-client
acceptance gates pass. The MCP and API sections below document that release-preparation handoff.
Skill: agent-onboard
Trigger
User asks for agent-facing setup or onboarding changes.
Required Inputs
- Target feature area (
backend,frontend,tooling, ormanifest). - Scope of changes and acceptance criteria.
Command Flow
- Read
./AGENTS.md. - Read
./agents.jsonif present. - Update only the requested sections.
- Run relevant validation commands after edit.
Expected Output
- Summary of updated sections.
- List of files changed.
- Validation command results.
Failure Handling
- If required references are missing, stop and request the missing inputs before writing.
- If validation fails, include failing command output and propose next corrective step.
Skill: feature-request-operator
Trigger
User asks an agent to read or mutate feature requests for a public board.
Purpose
Operate on board data via API:
- read, create, update, and explicitly delete projects
- read requests/issues
- read owner-scoped queue signals and cursor-based request changes
- find explainable duplicate candidates and manage reversible canonical links
- record delivery artifact links for agent-side verification
- update requests/issues
- transition request status
- read comments
- create requests
- add comments
- edit comments
- toggle upvotes
Prompt Presets
portfolio-triage: read-only queue snapshot across all projects owned by the authenticated user.project-triage: read-only queue snapshot for oneowner_handle/project_slug.project-implementation: use one project's FeatureRequest issues as the source of truth for local repo implementation work.
Agent/MCP Decision Boundary
- FeatureRequest stores facts and controlled state; the calling agent performs semantic judgment.
- Treat current priority, votes, comments, status, and activity timestamps as queue evidence.
- Treat duplicate similarity scores, matched terms, and score components as candidates only.
- Use the returned algorithm identifier when comparing scores across runs or versions.
- Never create a duplicate link solely because a similarity score is high; inspect both requests first.
- A delivery artifact is only a stored URL. Inspect it with the agent's repository, GitHub, CI, deployment, or release tools before describing delivery as verified.
- Linking a duplicate or delivery artifact never changes request priority or status automatically.
- Activity/change events begin when P1 is deployed; do not infer a complete pre-P1 audit history.
Required Inputs
- Base URL:
- Auth mode:
- MCP: OAuth 2.1 Authorization Code + PKCE S256; CIMD preferred, DCR fallback.
- API-only workflows: existing
fr_bearer tokens remain valid on/api. - Never send an
fr_API token to/mcp; initial MCP scope isread, withwritestep-up.
owner_handle(required for read/write paths under that board).- Optional:
project_slug. - Input payloads:
- request:
issue_type,title,description,priority. - comment:
body. - optional filters:
issue_type,status,priority,limit. status=activeis a list-only filter that excludesdone,closed, anddeclined.
- request:
MCP/OAuth 1.1 Repository Runtime (Production Conformance Pending)
- Transport: Streamable HTTP at
/mcp. - Authentication: MCP OAuth discovery, public clients, PKCE S256, exact resource binding.
- Permission model:
- act as the consenting FeatureRequest user;
- use Contract-projected
readandwritescopes; - enforce project/request/comment ownership in the domain service;
- reject API tokens, query tokens, cookie tokens, foreign-resource tokens, and expired tokens.
- The server intentionally does not expose
get_connection_context; calllist_projectswhen the authenticated user's owner/project context is unknown. get_account_capabilitiesis implemented as the capability/limit bootstrap. Its public production availability remains pending the immutable release gates.- This tool list is a downstream projection only. The canonical public catalog and all
behavioral metadata are owned by
agent/contract.yaml. - Bootstrap tool:
get_account_capabilities
- P1 project tools:
list_projectsget_projectcreate_projectupdate_projectdelete_project
- Product Spec and scope tools:
get_project_specupdate_project_specget_request_scope_assessmentreassess_request_scopepropose_project_spec_updatelist_project_spec_proposalsresolve_project_spec_proposal
- P1 request and evidence tools:
list_requestsget_requestlist_request_commentsget_queue_snapshotfind_duplicate_candidateslist_request_activitylist_request_changeslist_delivery_artifactscreate_requestupdate_requesttransition_requestadd_request_commentupdate_request_commentlink_duplicate_requestunlink_duplicate_requestlink_delivery_artifactunlink_delivery_artifact
delete_projectis destructive: callget_projectfirst, require explicit user direction, and pass the same project id asconfirm_project_id.- Keep status transitions separate from content/priority updates.
- Treat scope assessments as evidence. Automatic
declinedis allowed only when the guarded Contract rule matches an exactOut of scopequote without contradiction or ambiguity. - Assessment failures fail open and remain owner-only. Pending spec proposals are owner-private; acceptance requires the unchanged base spec revision and rejection creates no public event.
- Only the project owner may transition into or out of
declined; authors may still comment. - Do not transition a request to
doneorclosedwithout explicit user direction and delivery evidence that the calling agent has inspected. - Intentionally not exposed through MCP: token create/revoke, billing/checkout, bulk close, and bulk mutation.
Plugin Package Compatibility
- Portable package contract: Agent Plugins 1.0.0 root
plugin.json, rootmcp.json, and immediate-child skills underskills/. - The portable MCP declaration uses
streamable-http; authentication is configured by the consuming client because Agent Plugins 1.0.0 does not define credential references. - Codex-native metadata remains in
.codex-plugin/plugin.jsonand.mcp.json; keep its name, version, MCP URL, and sharedskills/content aligned with the portable package.
Required API Routes
- Web-session agent onboarding only:
POST /api/auth/agent-token/connectPOST /api/auth/agent-token/refresh
- Read projects:
GET /api/projectsGET /api/owners/{owner_handle}/projects
- Manage owned projects:
POST /api/projectsGET /api/projects/{project_id}PATCH /api/projects/{project_id}DELETE /api/projects/{project_id}
- Product Spec and owner proposal workflow:
GET /api/projects/{owner_handle}/{project_slug}/specPUT /api/projects/{project_id}/specDELETE /api/projects/{project_id}/specGET /api/issues/{issue_id}/scope-assessmentPOST /api/issues/{issue_id}/scope-assessment/retryPOST /api/issues/{issue_id}/spec-change-proposalsGET /api/projects/{project_id}/spec-change-proposals?status=pendingPATCH /api/spec-change-proposals/{proposal_id}
- Read issues:
GET /api/owners/{owner_handle}/issuesGET /api/projects/{owner_handle}/{project_slug}/issuesGET /api/issues/{issue_id}
- Read queue and activity evidence:
GET /api/me/request-queueGET /api/me/issue-changesGET /api/issues/{issue_id}/activity
- Find and manage duplicates:
GET /api/projects/{owner_handle}/{project_slug}/duplicate-candidatesPATCH /api/issues/{issue_id}/duplicateDELETE /api/issues/{issue_id}/duplicate
- Manage delivery evidence:
GET /api/issues/{issue_id}/delivery-artifactsPOST /api/issues/{issue_id}/delivery-artifactsDELETE /api/issues/{issue_id}/delivery-artifacts/{artifact_id}
- Update issue:
PATCH /api/issues/{issue_id}
- Create issue:
POST /api/projects/{owner_handle}/{project_slug}/issues- Agents must continue to use this authenticated endpoint. The public
/api/embed/projects/{owner_handle}/{project_slug}/submissionsroute is browser-only, requires Turnstile and anonymous browser-submission safeguards, and must not be used for agent writes.
- Add comment:
POST /api/issues/{issue_id}/comments
- Read comments:
GET /api/issues/{issue_id}/comments
- Edit comment:
PATCH /api/issues/{issue_id}/comments/{comment_id}
- Toggle upvote:
POST /api/issues/{issue_id}/upvote/toggle
Command Flow
- Select MCP or API mode explicitly; never reuse credentials across the two resources.
- For MCP, complete OAuth discovery and call
get_account_capabilities; acceptwritestep-up only when the user-requested action requires mutation. - For API-only mode, use a supplied raw API token only on
/api; agent-token connect/refresh remains limited to browser/session onboarding. - If read requested:
- for portfolio triage, call
GET /api/me/request-queue; use the returned current fields and signals as evidence for the agent's own prioritization. - for project-scoped triage or implementation, call
GET /api/projects/{owner_handle}/{project_slug}/issuesdirectly with optional filters. - if one issue is target, call issue detail.
- for portfolio triage, call
- If managing a project:
- use the focused create/get/update project route.
- before delete, read the project by id and proceed only when the user explicitly requested deletion.
- If creating request:
- optionally call duplicate candidates with the proposed title/description.
- inspect plausible candidates; do not treat the score as a decision.
- call create issue endpoint with required body when a new canonical request is still appropriate.
- If classifying a duplicate:
- read both issues, ensure they represent the same underlying request, then link the duplicate to the root canonical issue.
- unlink the relationship when evidence changes; never transition or reprioritize as a side effect.
- If updating request content or priority:
- call update issue with only the requested fields.
- If transitioning request status:
- call update issue with only
status. - do not use
doneorclosedwithout explicit user direction and delivery evidence.
- call update issue with only
- If adding comment:
- call create comment endpoint with
{"body": "<text>"}.
- If editing comment:
- call update comment endpoint with
{"body": "<text>"}.
- If upvote requested:
- call upvote toggle endpoint and read returned
upvoted+upvotes_count.
- If recording delivery:
- link the artifact URL with its kind and label.
- inspect the external artifact independently; the stored link is not verification.
- only then comment or transition when explicitly requested.
- For polling or follow-up, call the cursor-based change feed with the last
next_cursor. - Return a normalized result object (see output format).
- On failures, return error object with action and actionable recovery step.
Project-Scoped Implementation Guidance
- Treat FeatureRequest as the ticket source of truth.
- Perform code changes only in the local repository/workspace where the coding agent is already running.
- Only read issues for the instructed
owner_handle/project_slug; do not read or modify other projects. - Pick at most one ready issue per run unless the user explicitly asks for more.
- Before code changes, produce a short implementation plan.
- Run relevant tests after edits.
- After implementation, add a concise comment back to the issue when write access is available.
- Link relevant pull request, commit, deployment, or release URLs as delivery artifacts.
- Verify those artifacts with the coding agent's external tools; FeatureRequest does not verify them.
- Do not mark an issue
doneautomatically; reservedone/closedfor merge or release confirmation.
Expected Output Format
Return compact JSON:
{
"ok": true,
"action": "<focused MCP or API action name>",
"request": {
"method": "POST",
"path": "/api/projects/{owner_handle}/{project_slug}/issues",
"status": 201
},
"resource": {
"owner_handle": "owner",
"project_slug": "project",
"issue_id": 123
},
"data": {},
"meta": {
"items_returned": 0,
"created_at": "2026-02-27T12:00:00Z"
}
}
For failures:
{
"ok": false,
"action": "add_comment",
"request": {...},
"error": {
"status_code": 400,
"message": "Message rejected by moderation"
},
"next_step": "Retry with cleaner content or ask user for a revised message."
}
Failure Handling
401: refresh or request new credentials and retry.403:- for read-only token on write action, instruct token replacement with
can_write=truebefore retry.
- for read-only token on write action, instruct token replacement with
400: log payload validation/moderation failure and stop; do not retry silently.404: validateowner_handle,project_slug, orissue_idinput.503: retry with backoff for transient moderation/provider failures.- Never auto-delete or mutate any resource unless
actionexplicitly asked.
Prompt Examples
- Read-only daily triage: read authenticated user's projects, summarize active requests, and return
Queue Snapshot,Priority Decisions,Active Follow-ups,Risks and Blockers, andNext Checkpoint. - Project-specific planning: read only
owner_handle/project_slug, identify the next ready issue, and produce an implementation plan without editing code. - Project-specific implementation with tests: read only
owner_handle/project_slug, pick at most one ready issue, implement in the current local repo, run relevant tests, and comment back with results when write access is available. - Release follow-up: after merge or release confirmation, add a closure comment and update the issue status only when explicitly asked.
Skill: user-request-manager
Trigger
User asks an agent to manage incoming requests as a queue (visibility, prioritization, ownership, follow-up, closure).
Required Inputs
- API access token and scope.
- Request source input (list, ticket export, or pasted requests).
- Optional SLA or deadline policy.
Command Flow
- Ingest requests from provided source.
- Normalize each item into an API-backed record:
issue_id,owner_handle,project_slug,issue_type,title,description,priority,status.
- Deduplicate overlapping requests and keep one canonical item.
- Triage by urgency/impact and assign
P0-P3. - Maintain one prioritized queue sorted by priority and due date.
- For each active request, include explicit next action in report output (do not persist non-model fields as API attributes).
- Produce concise checkpoint updates (new/changed/blocked/due soon/next actions).
- Close request only after expected outcome is met, with closure note.
Expected Output
Queue Snapshottable:issue_id | summary | priority | status | owner_handle/project_slug | next action
Priority DecisionsActive Follow-upsRisks and BlockersNext Checkpoint
Failure Handling
- Missing permissions/scope: return blocking auth note and exact missing scope.
- Missing required request fields: mark item
waiting, request only missing fields. - API rate-limit/transient failure: retry with bounded backoff and report partial progress.
- Never perform code or config edits from this skill; operate only through exposed request APIs.