RepoPilot
RepoPilot은 AgentTeams
v1.2.2위에 구축되어 안전하고 감사 가능한 저장소 유지보수 자동화에 집중합니다. 기본 정책은pull_request_only입니다. Agent는 브랜치 생성, 커밋, Pull Request를 만들 수 있지만 자동 병합, 브랜치 삭제, 권한 또는 시크릿 수정은 할 수 없습니다.
두 가지 자동화 폐루프
PR 리뷰 체인은 opened, reopened, synchronize, ready_for_review
이벤트를 수신합니다. 게시 전마다 현재 head SHA를 다시 확인하며, 리뷰 중 새 커밋이
발생하면 이전 Run은 게시가 거부됩니다. 코멘트에는 고정된 <!-- repopilot-review --> 마커가
포함되어 있어 동일 PR에는 RepoPilot 코멘트가 하나만 유지되며 중복 게시되지 않습니다.
Related MCP server: gts-repo-guardian
사용 과정 데모
온라인 Demo는 모델 서비스나 관리자 계정이 필요하지 않습니다. 기본적으로
repopilot-testbed#3의 실제 산출물을 재생합니다. 실패한 베이스라인이 동시성 경쟁 조건을 안정적으로 재현하고, RepoPilot이Types + Store + Processor + Tests + Docs5개 파일 패치로 수정한 뒤, GitHub Actions가 통과하면PR #4를 생성합니다. PR은 열린 상태로 유지되며 병합 권한은 여전히 사람이 보유합니다.
<!-- repopilot-review -->
## RepoPilot PR Review
**Verdict:** NEEDS ATTENTION
**Reviewed revision:** `b504cec7c05cd2f3b84ee9c6ad7a3d3db6eead5c`
### Findings
| Severity | Finding | Location |
| -------- | -------------------------------------- | --------------------------------- |
| HIGH | 发布前没有重新校验当前 head SHA | `src/reviews/publisher.ts:19` |
| MEDIUM | 固定只扫描前 100 条评论 | `src/reviews/github-client.ts:43` |
| HIGH | GitHub 写入失败仍记录“已发布” Evidence | `src/reviews/publisher.ts:31` |다음 결과는 공개 PR #5에서 가져온 것으로, 5개 파일, 373줄 추가, GitHub Actions CI 통과 상태입니다. RepoPilot은 여전히 실제 Diff에서 2개의 HIGH와 1개의 MEDIUM 의미론적 문제를 발견하여 공개 Review Comment를 게시했습니다. 코멘트는 repopilot-reviewer가 pull-request-review Skill을 사용해 생성하고 repopilot_publish_review_comment로 게시합니다. 도구는 Run, 저장소, PR 번호, 실행 중인 Reviewer Step 및 불변 head SHA를 검증하고, 성공 시 review_publication Evidence를 추가합니다. 비식별화된 Run Proof JSON을 다운로드하여 Run ID, Step, 8개 Evidence 및 체인 헤드 해시를 확인할 수 있습니다.
유지보수 폐루프
GitHub Issue / Failed CI
│
▼
Repo Lead 分诊与拆解
│
▼
Locator 根因定位 ──► Fixer 最小修复 ──► Verifier 独立验证
│
人工审批 ◄── 高风险门禁 ◄─────┤
│
▼
Archivist 沉淀 Runbook
GitHub Pull Request
│
▼
Reviewer 固化 head SHA ──► 分页读取 Diff / Checks ──► 更新托管 Review Comment각 핵심 단계는 결정, 도구 호출, Git 참조, CI 결과 및 승인 이벤트를 PostgreSQL 추가 전용 SHA-256 증거 체인에 기록하고, OpenTelemetry Trace와 증거 콘솔을 통해 재생을 지원합니다.
Proof-Carrying Pull Request
RepoPilot은 "자동 생성 PR"을 종착점으로 삼지 않고, 각 PR이 기계적으로 검증 가능한 Proof Bundle을 휴대하도록 합니다.
Run 身份 + AgentTeams Step 时间线 + Skill 版本
+ 工具与决策 Evidence + Git / CI 引用
+ 审批历史 + SHA-256 链根 + 确定性质量门禁curl http://127.0.0.1:3000/api/v1/runs/<run-id>/proof \
--output artifacts/proof-bundle.json
pnpm build
pnpm evaluate artifacts/proof-bundle.json artifacts/evaluation-report.jsonProof Score는 증명의 완전성을 측정하며, 컨트롤 플레인 테스트를 모델 수정 품질로 위장하지 않습니다. 패치의 정확성은 여전히 공개 테스트 베드, 독립 Verifier 및 GitHub Checks가 판단합니다.
Runbook 아카이브 완료 후 Archivist는 repopilot_publish_proof_comment를 호출하여 비식별화된
완전성 결과, Agent/Skill 실행 결과 및 SHA-256 체인 루트를 해당 PR에 멱등적으로 게시합니다. 반복 실행 시 동일한
코멘트가 업데이트되므로 Proof는 컨트롤 플레인 API에만 존재하는 것이 아니라 실제로 PR과 함께 전달됩니다.
왜 RepoPilot인가
AgentTeam
Agent Identity의 전체 정의는
deploy/agentteams/repopilot-team.yaml에,
Skill 계약은 skills/에 있습니다.
핵심 기능
MCP Registry
RepoPilot은 MCP Registry의 정적 검사와 호스팅 게시를 위한 재현 가능한 진입점을 제공합니다.
검사 항목 | 저장소 내 검증 가능한 구현 |
라이선스 | 루트에 표준 Apache License 2.0 전문 포함 |
소유권 |
|
빌드 가능성 |
|
도구 정의 | 15개 도구 모두 호출 경계, 매개변수 의미 및 표준 MCP 보안 주석 제공 |
회귀 방지 | 게시 검증이 독립 실행 패키지에서 |
MCP 도구 발견에는 모델 또는 GitHub 자격 증명이 필요하지 않습니다. 데이터베이스 또는 GitHub 읽기/쓰기 도구만
호출 시 해당 런타임 서비스와 Secret에 의존합니다. 전체 배포 계약은 docs/deployment.md를 참조하세요.
시스템 아키텍처
flowchart LR
GH[GitHub Issue / Failed CI / Pull Request] --> CP[RepoPilot Control Plane]
CP --> DB[(PostgreSQL + pgvector)]
CP --> MX[Matrix Admin → Manager DM]
MX --> M[AgentTeams Manager]
M --> TL[Repo Lead]
TL --> L[Locator]
TL --> F[Fixer]
TL --> V[Verifier]
TL --> A[Archivist]
M --> R[Reviewer]
L & F & V & A --> MCP[RepoPilot MCP via Higress]
R --> MCP
MCP --> GHAPI[GitHub REST API]
MCP --> DB
DB --> UI[Evidence Console]
CP --> OTEL[OTLP / AgentLoop / LoongSuite]더 많은 설계 세부 사항은 docs/architecture.md를 참조하세요.
엔지니어링 구조
RepoPilot/
├── apps/
│ ├── control-plane/ # Fastify REST / Webhook / MCP / 审批 / 证据账本
│ └── console/ # 飞行记录器风格 React 证据控制台
├── packages/contracts/ # Zod Schema、共享类型和显式状态机
├── deploy/agentteams/ # AgentTeams v1.2.2 Worker / Team 清单
├── skills/ # 6 个可复用 RepoPilot Skills
├── evaluation/ # Proof Bundle 协议与可靠性 Benchmark
├── scripts/ # Skill 校验、可靠性基线与离线评测
├── docs/ # 架构、安全、部署和 Demo 文档
├── CONTRIBUTING.md # 开发流程、质量门禁与贡献规范
├── Dockerfile # Streamable HTTP Control Plane 生产容器
├── glama.json # Glama MCP Registry 维护者声明
├── API.md # REST / Webhook / MCP 出入参
├── Method.md # 外部 SDK、HTTP Method 与调用契约
└── docker-compose.yml # PostgreSQL 16 + pgvector빠른 시작
환경 요구 사항
Node.js
20+pnpm
9+Docker Desktop / Docker Engine
모델 자격 증명은 빌드, 테스트 또는 로컬 컨트롤 플레인 실행의 전제 조건이 아닙니다.
git clone https://github.com/wellkilo/RepoPilot.git
cd RepoPilot
cp .env.example .env
docker compose up -d postgres
pnpm install --registry=https://registry.npmjs.org
pnpm build
pnpm --filter @repopilot/control-plane start콘솔에 접속합니다.
http://127.0.0.1:3000원클릭 초기화도 사용할 수 있습니다.
./init.sh프로덕션 컨테이너
루트 Dockerfile은 Console, 공유 계약 및 Control Plane을 빌드하고 non-root 사용자로
동일한 프로덕션 프로세스를 시작합니다.
docker build -t repopilot:local .
docker run --rm -p 3000:3000 \
-e DATABASE_URL=postgres://repopilot:repopilot@host.docker.internal:5432/repopilot \
-e GITHUB_ALLOWED_REPOSITORIES=wellkilo/repopilot-testbed \
repopilot:localMCP 클라이언트는 http://127.0.0.1:3000/mcp에 연결합니다. GitHub 읽기/쓰기가 필요할 때만 런타임
Secret을 통해 GITHUB_TOKEN을 주입합니다. 이미지에는 자격 증명이 포함되지 않습니다.
stdio MCP
Registry 또는 로컬 MCP 클라이언트가 stdio를 필요로 할 때, 먼저 독립 실행 패키지를 생성한 후 루트 진입점을 시작합니다.
pnpm glama:build
pnpm glama:verify
node mcp-server.mjsglama:verify는 데이터베이스나 GitHub 자격 증명이 없는 환경에서 실제 MCP 초기화를 수행하고
15개 도구를 검증합니다. 도구 발견은 외부 서비스에 연결하지 않습니다. 실제 데이터 또는 GitHub 작업을 실행할 때는
여전히 실제 서비스와 자격 증명을 제공해야 합니다.
첫 번째 Run 생성
curl -X POST http://127.0.0.1:3000/api/v1/runs \
-H 'Content-Type: application/json' \
-d '{
"source": {
"type": "github_issue",
"repository": "wellkilo/repopilot-testbed",
"issueNumber": 1
},
"executionPolicy": "pull_request_only"
}'GitHub Issue를 읽어야 할 때는 로컬 .env에 GITHUB_TOKEN을 설정합니다. AgentTeams
Matrix가 구성되지 않은 경우 Run은 awaiting_dispatch에서 정지하며 Mock Agent로 실행 결과를 위조하지 않습니다.
저장소 Webhook의 Pull requests 이벤트를 바인딩하면, Draft가 아닌 PR의 생성, 재오픈, 새 커밋
푸시 또는 Ready for review 전환 시 독립 리뷰 Run이 트리거됩니다. Reviewer는 PR, 페이지 단위 diff 및
Checks를 읽고 RepoPilot PR Review 코멘트를 멱등적으로 생성 또는 업데이트합니다. 리뷰 중 PR에 새
커밋이 발생하면 이전 Run은 head SHA 불일치로 게시가 거부됩니다.
AgentTeams 실제 협업
실제 Agent 추론에는 OpenAI 호환 모델 엔드포인트가 필요합니다. 다음을 사용할 수 있습니다.
Alibaba Cloud Bailian 등 관리형 서비스
기타 OpenAI 호환 API
로컬 Ollama 등 호환 엔드포인트
모델 키는 AgentTeams/Higress에만 전달되며 RepoPilot 소스 코드, 데이터베이스 또는 배포 매니페스트에는 들어가지 않습니다.
배포 설명:
재현 가능한 테스트 베드
테스트베드는 결정적 동시성 결함을 포함합니다. 동일한 GitHub delivery의 두 요청이 동시에
find / save 창을 통과하여 두 개의 task를 생성하고 dispatch를 두 번 실행할 수 있습니다.
RepoPilot은 create-or-reuse를 DeliveryTaskStore.getOrCreate로 수렴시켜 동일한 delivery가
하나의 in-flight Promise를 공유하도록 하고, 순차 재시도와 서로 다른 delivery에 대한
음성 대조군을 추가합니다. PR은 검토를 위해 열린 상태를 유지하며 자동 병합이 트리거되지 않습니다.
PR Review Demo는 별도의 공개
PR #5를 사용합니다. 코드는 컴파일되고 5개 테스트와
GitHub Actions가 모두 통과하지만, Reviewer는 그린 CI를 코드 정확성과 동일시하지 않습니다.
5개 변경 파일을 페이지별로 읽고, 고정 revision b504cec에서 stale SHA, 댓글 페이징,
실패한 Evidence라는 세 가지 의미론적 결함을 식별한 후, 실제 GitHub REST를 통해
동일한 호스팅 댓글을 게시합니다. 해당 Run의 review_publication 레코드와 8개
해시 체인 Evidence는 비식별화되어
docs/assets/demo/pr-review-run.json로 내보내졌습니다.
검증
pnpm typecheck
pnpm benchmark:reliability
pnpm skills:validate
pnpm lint
pnpm format:check
pnpm build현재 제어 평면 신뢰성 기준선은 52/52입니다. 테스트는 상태 머신, Webhook 서명 검증, Evidence 해시, 데이터베이스
불변 트리거, delivery 동시성 멱등성, 승인 버전 및 일회성 소비, Agent Skill Step 수명 주기,
Proof Bundle 무결성 검증, PR Review 출처 및 stale SHA 방어, HTTP 충돌 의미론 및 콘솔 라벨을
포괄합니다. CI는 구조화된 JSON 보고서를 생성합니다.
보안 경계
상세 위협 모델 및 프로덕션 강화 항목은 docs/security.md를 참조하세요.
문서 탐색
문서 | 내용 |
REST, Webhook 및 MCP Schema | |
AgentTeams, Matrix, GitHub, PostgreSQL 및 OTel 메서드 계약 | |
아키텍처, 상태 머신 및 배포 프로파일 | |
권한, 승인, 자격 증명 및 evidence 무결성 | |
로컬, AgentTeams, Webhook 및 관측 가능성 배포 | |
공개 재현 절차, 실행 증거 및 실패 분기 | |
신뢰성 계층, Proof Bundle 및 Benchmark | |
엔지니어링 로드맵 및 개선 예정 역량 | |
개발 환경, 품질 게이트 및 기여 절차 |
현재 경계
모델 서비스가 구성되지 않은 경우 실제 AgentTeams 추론을 완료할 수 없습니다. 빌드, 테스트, 제어 평면 및 테스트베드는 영향을 받지 않습니다.
Runbook은 기본적으로 PostgreSQL 전문 검색을 사용합니다.
vector(1536)은 의미론적 리콜을 위해 예약되어 있습니다.AgentLoop Recall은 선택적 기능이며, 자격 증명이 없으면 로컬 Runbook으로 자동 폴백됩니다.
콘솔 승인 신원은 현재 신뢰된 리버스 프록시 Header로 데모됩니다. 프로덕션 환경에서는 OIDC/SSO를 연결해야 합니다.
Available Tools
14 toolsgithub_create_pull_requestA
Create a GitHub pull request from an existing repair branch for a maintenance run. Use only after the patch and focused verification are complete; this is the highest automatic repository write allowed by pull_request_only. It creates an external PR and appends a git_reference evidence record, but never merges it.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Target branch that should receive the pull request. | |
| body | Yes | Pull request description with root cause, changes, tests, and known limitations. | |
| head | Yes | Existing source branch containing the repair commits. | |
| runId | Yes | Maintenance run UUID that produced the repair branch. | |
| title | Yes | Concise pull request title describing the verified repair. | |
| repository | Yes | GitHub repository in owner/name format; it must be present in GITHUB_ALLOWED_REPOSITORIES. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false (write) and destructiveHint=false (non-destructive), so the description's job is to add context. It does: it mentions creating an 'external PR,' appending a 'git_reference evidence record,' and reassuring 'never merges it.' This adds useful behavioral details beyond the annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero redundancy. The main action is front-loaded, the usage condition is placed early, and the side-effect clarification (never merges) is concise. Every sentence earns its place, making it easy to parse for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with 6 required parameters and no output schema, the description covers the essential context: when to use, permission constraints, and post-conditions (creates PR, appends evidence). It omits a return format, but without an output schema that is not strictly required. Preconditions like allowed repositories are handled in the schema. Overall, it is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds marginal context by linking 'repair branch' to the head parameter and 'maintenance run' to runId, but these are already implied by the schema descriptions. No significant additional semantic value is provided beyond what the schema offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb and resource: 'Create a GitHub pull request from an existing repair branch.' It also distinguishes itself from the sibling merge tool by explicitly saying 'never merges it,' making its role unambiguous in the toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear when-to-use condition ('Use only after the patch and focused verification are complete') and sets expectations about the permission level ('highest automatic repository write allowed by pull_request_only'). It implicitly excludes merging by stating 'never merges it,' but it does not explicitly name the merge alternative as a separate tool, leaving a small gap in exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_issueARead-onlyIdempotent
Read the current title, body, labels, state, and URL of one GitHub issue in an allowed repository. Use this to establish source requirements before triage; do not use it for pull requests. This performs a read-only GitHub API request and requires GITHUB_TOKEN.
| Name | Required | Description | Default |
|---|---|---|---|
| repository | Yes | GitHub repository in owner/name format; it must be present in GITHUB_ALLOWED_REPOSITORIES. | |
| issueNumber | Yes | Positive GitHub issue number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the authentication requirement ('requires GITHUB_TOKEN') and reiterates 'read-only GitHub API request', which reinforces the read-only nature but doesn't contradict annotations. The token requirement is useful context beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences with zero filler. The first sentence front-loads the concrete read action and fields, the second gives usage guidance and exclusions. Every word earns its place, and the most important operational detail (what it reads) is immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple nature, the description is largely complete: it specifies the data returned, the auth requirement, and the usage context. An output schema is not present, but the description enumerates the fields returned (title, body, labels, state, URL), which gives the agent a good idea of the response shape. It doesn't mention any rate limits or error handling, but those are likely covered by the annotations and general platform knowledge. The only minor gap is no explicit statement about what happens if the issue doesn't exist, but that is typical and not required for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% – both parameters have descriptive text in the schema (repository pattern and allowed repos, issueNumber positive integer). The description doesn't add any parameter-level semantics beyond what the schema already explains. Baseline 3 is appropriate because the schema does the heavy lifting and the description adds no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and resource ('one GitHub issue') and enumerates the exact fields returned (title, body, labels, state, URL). It explicitly says 'do not use it for pull requests', which distinguishes it from the sibling tool github_get_pull_request. This provides clear, unambiguous purpose and differentiates it from the tool family.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit when-to-use guidance ('Use this to establish source requirements before triage') and a when-not-to-use exclusion ('do not use it for pull requests'). This is direct and leaves no ambiguity about selecting this tool over alternatives. Though it doesn't name the sibling explicitly, the exclusion is sufficient to route the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_pull_requestARead-onlyIdempotent
Read current metadata for the pull request bound to a RepoPilot review run, including its immutable head SHA and change totals. Use before reviewing files or publishing a review. The run, repository, and pull request must match, and the call fails if the GitHub head changed.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Active pull-request review run UUID. | |
| pullNumber | Yes | Positive pull request number bound to the review run. | |
| repository | Yes | GitHub repository in owner/name format; it must be present in GITHUB_ALLOWED_REPOSITORIES. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is set. The description adds value by disclosing the failure condition ('call fails if the GitHub head changed') and specifying the content of the response (immutable head SHA and change totals). It also clarifies the binding requirement between run, repository, and pull request. No contradiction with annotations; it enriches them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences achieve everything: the first defines the action and key outputs, the second gives the usage context and a critical failure condition. It is front-loaded with the core purpose and contains zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only metadata GET with three parameters and no output schema, the description is fully sufficient. It explains what the tool does, when to call it, what it returns (head SHA and change totals), and the failure condition. There is no missing essential detail that an agent would need to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (runId, repository, pullNumber) already documented with formats and constraints. The tool description reinforces the relationship ('bound to a RepoPilot review run') and the 'must match' requirement, which adds slight semantic context to runId and repository. However, it does not add syntax or usage nuance beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with an explicit action ('Read current metadata') and a clearly defined resource ('the pull request bound to a RepoPilot review run'), and immediately names the key outputs (head SHA and change totals). This specific verb+resource pairing distinguishes it from siblings like github_get_pull_request_checks, which focuses on check runs, and github_list_pull_request_files, which lists files. An agent can tell them apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete point-in-workflow instruction ('Use before reviewing files or publishing a review') and warns about preconditions (run/repo/PR must match, fails if head changed). However, it does not explicitly mention alternative tools or when *not* to use it. The siblings are functionally distinct, so the omission is minor, but explicit exclusions would push this to 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_get_pull_request_checksA
Read GitHub combined commit statuses and Actions check runs for a pull request, then append the result as ci_result evidence. Use during verification or read-only review after a PR exists. For review runs, the PR number and current head SHA must still match the run.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Run UUID that will receive the resulting CI evidence. | |
| pullNumber | Yes | Positive pull request number whose head checks should be read. | |
| repository | Yes | GitHub repository in owner/name format; it must be present in GITHUB_ALLOWED_REPOSITORIES. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false. The description adds valuable context by explicitly stating that it appends evidence (a write side-effect) and requires the PR number and head SHA to match for review runs. This goes beyond the annotation flags and explains real behavioral constraints. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant words. It front-loads the primary action and side-effect, then gives usage context and a critical condition. Every sentence earns its place—concise without sacrificing essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 required parameters and no output schema, the description provides sufficient context: what it does, when to use it, and a key prerequisite. It doesn't cover error handling or response format, but these are not required when the action and constraints are clear. The detail about the head SHA matching is especially valuable for correctness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are well-documented in the schema itself. The description does not add new parameter-level detail, but it does reinforce that pullNumber must correspond to a live PR ('the PR number and current head SHA must still match the run'). This aligns with the schema's exclusiveMinimum and maximum. Baseline 3 is appropriate given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Read GitHub combined commit statuses and Actions check runs for a pull request') and its side-effect ('then append the result as ci_result evidence'). This clearly identifies the tool's purpose and distinguishes it from siblings like github_get_pull_request (fetches PR metadata) and github_list_pull_request_files (lists changed files).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'Use during verification or read-only review after a PR exists.' It also includes a precondition: 'For review runs, the PR number and current head SHA must still match the run.' Though it doesn't explicitly name alternatives, the timing and conditions are unambiguous. A small deduction for not explicitly saying 'when not to use'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_list_pull_request_filesARead-onlyIdempotent
Read one 100-file page of changed-file metadata and GitHub-provided text patches for the pull request bound to a review run. Use consecutive page values until hasNextPage is false. The tool verifies the head SHA before and after reading and returns null patch values for binary or unavailable diffs.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | One-based result page from 1 through 30; each page contains at most 100 files. | |
| runId | Yes | Active pull-request review run UUID. | |
| pullNumber | Yes | Positive pull request number bound to the review run. | |
| repository | Yes | GitHub repository in owner/name format; it must be present in GITHUB_ALLOWED_REPOSITORIES. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description reveals two behaviors: it verifies the head SHA before and after reading, and it returns null patch values for binary or unavailable diffs. These add meaningful context about reliability and edge cases, fully satisfying the transparency requirement given the existing annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences pack the core purpose, the pagination rule, the SHA verification, and the null-patch behavior with zero redundancy. The most important information (what the tool reads) is front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paginated read tool with no output schema, the description covers the key aspects: the content returned (metadata and patches), the pagination signal (hasNextPage), and a common edge case (binary/unavailable diffs). It does not spell out the exact response shape (e.g., field names like 'files' or 'hasNextPage'), but the essential information is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents all four parameters (100% coverage), so the baseline is 3. The description adds value by explaining the pagination loop (use consecutive page values) and that the page is tied to a review run, giving the page parameter practical usage context beyond its schema description. This lifts it to a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read'), a precise resource ('one 100-file page of changed-file metadata and GitHub-provided text patches'), and the binding condition ('bound to a review run'). This clearly distinguishes it from sibling tools like github_get_pull_request or github_get_pull_request_checks without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit pagination guidance ('Use consecutive page values until hasNextPage is false') and clarifies the review-run binding, which provides clear context for when to use this tool. However, it does not explicitly contrast itself with alternatives or state when not to use it, so it stops short of the full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
github_merge_pull_requestADestructive
Squash-merge a GitHub pull request only after a human approved this exact merge for the same maintenance run. Do not call for pull-request review runs or without the matching approval ID and version. The approval is atomically consumed before the external merge, so it cannot authorize another action.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Maintenance run UUID that owns the approved action. | |
| approvalId | Yes | Approved and unconsumed RepoPilot approval UUID for merge_pull_request. | |
| pullNumber | Yes | Positive pull request number approved for merge. | |
| repository | Yes | GitHub repository in owner/name format; it must be present in GITHUB_ALLOWED_REPOSITORIES. | |
| commitTitle | No | Optional squash commit title; omit to use GitHub's default. | |
| approvalVersion | Yes | Exact optimistic-lock version of the approved action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, and the description adds valuable context beyond this: the approval is atomically consumed before the external merge, meaning it cannot authorize another action. This is a critical behavioral trait that an agent must know. However, the description could have elaborated on what happens if the merge fails (e.g., whether the approval is still consumed), leaving a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero waste. It front-loads the most critical constraint (merge only after human approval) and then explains the consumption behavior. Every sentence contributes to safe and correct usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with 6 parameters and no output schema, the description captures the essential preconditions (approval, run binding, not for review runs) and the atomic consumption. It does not describe the return value, but since no output schema exists, this is less critical. The sibling tool context (e.g., github_create_pull_request) clarifies the action's scope, and the description is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter's purpose. The description adds semantic value by emphasizing that approvalId and approvalVersion must correspond to a single human approval and that they are consumed, which reinforces the optimistic-lock semantics. This goes slightly beyond the schema descriptions but is not a full replacement for them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'squash-merge' and the resource 'GitHub pull request', and specifies the critical precondition of human approval for the same maintenance run. It also differentiates from sibling tools like github_create_pull_request and github_get_pull_request by focusing on the merge action and its approval requirement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('only after a human approved this exact merge for the same maintenance run') and when not to ('Do not call for pull-request review runs or without the matching approval ID and version'). This provides clear, actionable guidance that distinguishes this tool from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repopilot_append_evidenceA
Append one immutable, SHA-256 hash-chained evidence record to an existing RepoPilot run. Use after each material decision, tool result, Git reference, CI result, or error; never include credentials or raw secrets. This is append-only and repeated calls create distinct evidence records.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Existing RepoPilot run UUID that owns the evidence. | |
| stepId | No | Related Step UUID when the evidence was produced inside a Skill execution. | |
| payload | Yes | Structured, non-secret facts to hash and append; omit credentials, raw tokens, and unnecessary sensitive content. | |
| evidenceType | Yes | Evidence category. proof_publication and review_publication are reserved for their dedicated publication tools. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the four hints (readOnly=false, idempotent=false, etc.), and the description adds genuinely useful behavior beyond them: 'This is append-only and repeated calls create distinct evidence records' directly reinforces idempotentHint=false and clarifies the mutation semantics, while immutability and hash-chaining are disclosed nowhere else. This meaningfully augments the annotation profile without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste: purpose is front-loaded, usage and exclusions follow, and the append-only behavioral note closes it. Every sentence earns its place and no information is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param (3 required) append tool with no output schema, the definition covers purpose, usage context, security exclusions, behavioral traits, and enum routing. The only absence is a statement about the return value, but for an append-only record tool the response is trivially a confirmation, so this is a minor omission rather than a functional gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including payload's structure and the runId UUID pattern. The description contributes security guidance for payload ('never include credentials or raw secrets') and usage semantics for evidenceType, but the schema does the heavy lifting — baseline 3 is appropriate for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Append') and resource ('evidence record to an existing RepoPilot run'), and adds precise technical character (immutable, SHA-256 hash-chained). The enum note that proof_publication and review_publication are reserved for dedicated tools helps distinguish it from sibling publication tools, so an agent can pick it apart from alternatives without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance ('Use after each material decision, tool result, Git reference, CI result, or error') and an exclusion ('never include credentials or raw secrets'). It signals that certain evidenceType values belong to other tools, but stops short of explicitly naming a sibling to use instead in those cases — a minor gap since the enum description already carries that routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repopilot_finish_stepAIdempotent
Finish a running RepoPilot Step with an explicit terminal outcome and evidence-backed summary. Use only after the associated Skill has stopped; do not use it to update a Step that is still running. Repeating the same status and summary is idempotent, while a conflicting terminal result is rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Terminal outcome for the running Step; a conflicting second outcome is rejected. | |
| stepId | Yes | UUID returned by repopilot_start_step. | |
| summary | Yes | Evidence-backed completion summary without credentials or other secrets. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true and readOnlyHint=false, and the description aligns with these by stating idempotent repeats and rejection of conflicting results. It adds behavioral context beyond annotations: it clarifies the state machine (only after Skill stopped), and notes conflict rejection. This exceeds the baseline annotation-only coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct and front-loaded with the main purpose, followed by usage constraints. Each sentence carries weight: purpose, conditionality, and idempotency/conflict behavior. It's not overly verbose, though it could slightly improve by mentioning the sibling alternatives for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a terminal action with three parameters and no output schema, the description covers the key context: it's a mutation (readOnlyHint=false), it has idempotency behavior, and it has a post-Skill-stop condition. It doesn't need to explain return values, but something about response or success indication could be added, yet it's not critical for a tool with clear behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so descriptions already document all three parameters. The description adds context like 'evidence-backed summary' and 'without credentials', but this adds only moderate value beyond the schema. It doesn't explain the impact of 'blocked' or 'skipped' statuses, but the schema already defines them as enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it finishes a RepoPilot Step with a terminal outcome and summary, and it's connected to the Step lifecycle. However, it doesn't explicitly distinguish it from the sibling tools beyond this role; while it references the start and evidence append tools indirectly, it doesn't name them or differentiate beyond 'finish' vs others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidance: use only after the associated Skill has stopped, do not use for a running Step, and notes idempotency and rejection of conflicting terminal results. This is clear when-to-use and when-not-to-use guidance, though it doesn't name alternative tools for various scenarios, the guidance is sufficient for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repopilot_publish_proof_commentAIdempotent
Build a redacted Proof Bundle from a terminal maintenance run, verify its evidence chain, and create or update the run-scoped managed GitHub PR comment. Use only for the PR recorded in that run's create_pull_request evidence. Repeating the call updates the same marked comment instead of posting duplicates.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Terminal maintenance run UUID whose verified evidence will be summarized. | |
| pullNumber | Yes | Pull request created by this run and recorded in its git_reference evidence. | |
| repository | Yes | Allowed GitHub repository in owner/name format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint: true and destructiveHint: false. The description adds valuable behavioral context: it says the call both creates and updates a marked comment, and it explicitly spells out the idempotency effect ('Repeating the call updates the same marked comment instead of posting duplicates'). It also mentions verification of the evidence chain and redaction, which are not in annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the core action (build, verify, create/update) and then add the critical usage constraint. No filler. Every word contributes to either purpose or condition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description doesn't need to explain return values. It covers the operation, the evidence chain, the idempotency behavior, and the usage restriction. It omits details like required permissions or the exact format of the comment, but those are not essential for invocation given the high schema coverage and annotations. A small gap is the lack of guidance on what to do if the PR wasn't created by this run, though the usage condition implies rejection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema alone describes all three parameters. The description adds relational context by tying pullNumber to the run's create_pull_request evidence, clarifying that the caller must pass the PR created by that run. This goes beyond the schema's generic 'Pull request created by this run and recorded in its git_reference evidence.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Build a redacted Proof Bundle... and create or update the run-scoped managed GitHub PR comment.' It distinguishes itself from siblings like repopilot_publish_review_comment and github_create_pull_request by specifically targeting the run-scoped proof comment, so an agent can tell which tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit condition: 'Use only for the PR recorded in that run's create_pull_request evidence.' This tells the agent when this tool is appropriate and implies it should not be used for other PRs. It also notes the idempotent behavior (updates instead of duplicates), but does not name alternative tools as directly as the highest calibration example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repopilot_publish_review_commentAIdempotent
Create or update one managed GitHub review summary comment for the exact pull request head SHA bound to an active read-only review run. Call after reading all relevant diff pages and checks, while the Reviewer Step is running. This publishes findings but never approves, requests changes, modifies code, or merges.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Active pull-request review run UUID. | |
| headSha | Yes | Exact 40-character commit SHA reviewed; publication is rejected if the pull request head changed. | |
| summary | Yes | Short evidence-backed review conclusion for the exact head SHA. | |
| verdict | Yes | Overall result: pass, needs_attention, or blocked; this is not a GitHub approval decision. | |
| findings | Yes | Zero to 20 actionable findings; use an empty array when no defect is found. | |
| pullNumber | Yes | Pull request number bound to the review run. | |
| repository | Yes | Allowed GitHub repository in owner/name format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
While annotations already provide idempotentHint=true and destructiveHint=false, the description adds meaningful behavioral context beyond that: it is a single managed comment tied to a specific head SHA, it only publishes findings, and it explicitly states it never approves, requests changes, modifies code, or merges. This goes beyond the binary annotation flags and helps the agent anticipate side effects. There is no contradiction with annotations (readOnlyHint=false correctly reflects the write operation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero fluff. It front-loads the core action and scope, then provides usage timing and limitations in the same breath. Every sentence earns its place, and the structure is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 required parameters, a detailed schema, and no output schema, the description covers everything an agent needs to decide when to call it and what to expect. It specifies prerequisites (after reading diffs/checks), operational context (active review run), and behavioral constraints. The description does not need to repeat schema details; it complements them perfectly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all seven parameters have detailed descriptions. The description adds no additional parameter-specific meaning beyond what the schema already provides (e.g., headSha's SHA binding description matching the schema's note about rejection on head change). With full schema coverage, the baseline of 3 is appropriate; the description's value here is behavioral, not parameter-oriented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Create or update one managed GitHub review summary comment') with precise scope ('for the exact pull request head SHA bound to an active read-only review run'). It clearly differentiates from siblings by explicitly excluding approvals, change requests, code modification, and merging, and implies a specialized review-comment tool rather than generic GitHub comment/PR tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance: 'Call after reading all relevant diff pages and checks, while the Reviewer Step is running.' It also provides strong exclusions ('never approves, requests changes, modifies code, or merges') that help an agent route to the correct sibling (e.g., github_merge_pull_request for merges, github_create_pull_request for PR creation). No alternative is named, but the conditions are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repopilot_request_approvalA
Create a human approval request for one high-risk action on a maintenance run. Use before merge, branch deletion, rollback, permission changes, secret changes, or another explicitly gated action. This records the request and may pause the run, but it never executes the requested action.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Maintenance run UUID requesting the high-risk action. | |
| action | Yes | Exact gated action. Creating this approval never executes the action. | |
| details | Yes | Non-secret action context needed by a human reviewer, such as repository, target object, and immutable revision. | |
| riskLevel | Yes | Operator-visible risk classification for the requested action. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that the tool 'records the request and may pause the run, but it never executes the requested action.' This adds critical behavioral context about side effects and limitations, which annotations do not convey. It also states the constraint of one action per request.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with high information density. The purpose is front-loaded, followed by usage scenarios and a key behavioral clarification. No redundant or verbose wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 required parameters, two enums, and a nested object, the description covers purpose, usage, and side effects. The schema covers parameter details. No output schema exists, so return values are not expected. The description is sufficient for an agent to select and correctly invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage for all parameters, including descriptions for runId, action, details, and riskLevel. The description adds no additional parameter-specific meaning beyond what the schema already documents. Per the rubric, with high schema coverage the baseline is 3, and there is no extra semantic value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Create'), resource ('a human approval request'), and scope ('one high-risk action on a maintenance run'). It distinguishes from execution tools by explicitly stating 'it never executes the requested action', making it clear this is a request-creation tool, not an action executor like github_merge_pull_request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: 'Use before merge, branch deletion, rollback, permission changes, secret changes, or another explicitly gated action.' It also implies non-usage for execution, and notes the side effect of possibly pausing the run. This is strong guidance for an agent to know when to invoke this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repopilot_search_runbooksARead-onlyIdempotent
Search verified historical RepoPilot runbooks for a target repository using failure symptoms or repair terms. Call during triage before selecting a repair strategy; do not use it as proof that a current defect is identical. Returns ranked stored runbooks and does not modify repository or run state.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return, from 1 through 20; defaults to 5. | |
| query | Yes | Failure symptoms, component names, or repair terms to match against verified runbooks. | |
| repository | Yes | Target GitHub repository in owner/name format. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds 'ranked' output and 'verified historical' scope, which are not in annotations. The statement 'does not modify repository or run state' is redundant with annotations but harmless.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste. The first sentence front-loads the primary action and resource; the second provides usage timing and a crucial caution. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema, the description sufficiently explains return value ('ranked stored runbooks'), its non-mutating nature, and when to use it. An agent has enough to call correctly without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the schema. The description mentions 'failure symptoms or repair terms' which aligns with the query parameter but adds no new information beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the verb 'Search' with a specific resource 'verified historical RepoPilot runbooks' and a target repository, using failure symptoms or repair terms. It clearly differentiates from sibling tools, as none of the other repopilot tools are search-focused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to call: 'during triage before selecting a repair strategy' and provides a negative constraint: 'do not use it as proof that a current defect is identical.' This gives clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repopilot_start_stepAIdempotent
Start one durable Agent Skill execution Step for an existing RepoPilot run. Call this immediately before executing the named Skill, then pass the returned Step ID to repopilot_finish_step. Reusing the same idempotency key within a run returns the existing Step instead of creating a duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | Existing RepoPilot run UUID that owns this Agent Skill execution. | |
| agentName | Yes | RepoPilot Agent identity assigned to the Skill; the Agent-to-Skill pairing is validated. | |
| skillName | Yes | Versioned RepoPilot Skill to execute within the run. | |
| idempotencyKey | Yes | Stable caller-generated key scoped to the run and logical attempt; retry with the same key to receive the existing Step. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, readOnlyHint=false, and destructiveHint=false. The description adds value by explaining that reusing the idempotency key returns the existing Step instead of creating a duplicate, and notes the durable nature of the step. This goes beyond the annotations without contradicting them, providing context on side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with the primary purpose, then usage context, then idempotency detail. No superfluous words; every sentence earns its place. Well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 required parameters, two enums, and no output schema, the description covers the core workflow, idempotency, and return usage. It doesn't specify error conditions or prerequisites like runId validity, but these are implicit in the domain. The lack of an output schema is mitigated by the explicit mention of returning a Step ID. Adequately complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning by explaining the idempotencyKey's role (reusing it returns the existing Step) and implicitly that the tool returns a Step ID used by repopilot_finish_step. This enriches parameter understanding beyond schema descriptions, justifying a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a durable Agent Skill execution Step for an existing RepoPilot run, with a specific verb and resource. It also explains the immediate usage context by saying to call it before executing the named Skill and pass the returned Step ID to repopilot_finish_step, distinguishing it from the finish step sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: call immediately before executing the named Skill, and clarifies idempotency behavior for retries. It doesn't explicitly mention alternatives or when not to use it, but the workflow context and mention of the finish step make usage clear. Doesn't exclude other tools but the step-start role is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repopilot_write_runbookA
Archive a verified maintenance outcome as a reusable repository runbook. Call only after independent verification for the source run; do not archive an unverified hypothesis or a pull-request review run. This inserts a new runbook and appends runbook evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Short problem-and-resolution title used in future retrieval results. | |
| content | Yes | Reusable runbook body with symptoms, diagnosis, repair, verification, and relevant limitations; exclude secrets. | |
| summary | Yes | Concise verified outcome, including the root cause and effective repair. | |
| repository | Yes | GitHub repository in owner/name format; it must be present in GITHUB_ALLOWED_REPOSITORIES. | |
| sourceRunId | Yes | Verified maintenance run UUID that produced this runbook. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false and destructiveHint=false, so the description does not need to repeat that. It adds meaningful behavioral context by specifying 'This inserts a new runbook and appends runbook evidence,' which clarifies the side effect beyond the schema. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero redundancy. The primary purpose and most critical constraint (verification requirement) are front-loaded, and the operational effect is stated efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation with all parameters already documented in the schema, the description provides the essential precondition (verification) and the effect (insert + append evidence). It does not explain what 'runbook evidence' means or what the response looks like, but these are not strictly required for the agent to call the tool correctly, given no output schema and the operation's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning every parameter is fully documented in the schema. The description itself provides no additional parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Archive') and resource ('a verified maintenance outcome as a reusable repository runbook'). It clearly differentiates from siblings by explicitly excluding unverified hypotheses and pull-request review runs, making the tool's unique role evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use ('only after independent verification for the source run') and when not to ('do not archive an unverified hypothesis or a pull-request review run'). However, it does not name alternative tools for those cases (e.g., repopilot_append_evidence or repopilot_request_approval), so it lacks explicit alternative names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with detailed descriptions. The two publish comment tools are distinguished by run type (proof vs review), and the start/finish step pair is unambiguous. GitHub tools cover specific resource actions with no overlap.
Tools follow a consistent prefix-verb-noun pattern (repopilot_ and github_ prefixes). Minor inconsistency: get vs list for PR checks vs files, but overall convention is predictable and readable.
14 tools is within the ideal 3-15 range and well-scoped for maintenance automation integrating RepoPilot orchestration and GitHub operations. Each tool fills a specific role without redundancy.
Core lifecycles are covered: step start/finish, evidence chain, approval, runbook search/write, and GitHub PR review/merge flow. Minor gaps exist (no explicit step abort, no runbook listing or evidence query), but agents can complete primary workflows without dead ends.
Maintenance
Related MCP Connectors
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
MCP-native AI SRE: ask what's broken in production, get a reviewed GitHub fix PR.
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
A Model Context Protocol (MCP) application for automated GitHub PR analysis and issue management.…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that diagnoses GitHub Actions workflow failures and automatically creates repair pull requests using LLM-generated unified diffs. It includes a governance layer to orchestrate autonomous fixes or human-reviewed repairs based on risk assessment thresholds.
- FlicenseNot gradedqualityDmaintenanceMCP server for automated GitHub repository quality management, enabling review, README generation, cleanup, and monitoring.
- AlicenseAqualityBmaintenanceAn MCP server that provides operational tooling over the GitHub API — issue triage, PR review monitoring, repo health audits, and team access reviews.111MIT
- AlicenseCqualityBmaintenanceA policy-aware MCP server for GitHub and GitHub Actions that enables safe AI-assisted infrastructure workflows—inspecting repositories, preparing branches and pull requests, and constrained remote mutations behind explicit preview-bound approval tokens.18MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wellkilo/RepoPilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server