Skip to content

Commit 5cd81ea

Browse files
committed
tool consolidation and prompt updates
1 parent 304f29a commit 5cd81ea

File tree

6 files changed

+1407
-2362
lines changed

6 files changed

+1407
-2362
lines changed

README.md

Lines changed: 68 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -798,63 +798,74 @@ Options are:
798798

799799
<summary>Projects</summary>
800800

801-
- **add_project_item** - Add project item
802-
- `item_id`: The numeric ID of the issue or pull request to add to the project. (number, required)
803-
- `item_type`: The item's type, either issue or pull_request. (string, required)
804-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
805-
- `owner_type`: Owner type (string, required)
806-
- `project_number`: The project's number. (number, required)
807-
808-
- **delete_project_item** - Delete project item
809-
- `item_id`: The internal project item ID to delete from the project (not the issue or pull request ID). (number, required)
810-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
811-
- `owner_type`: Owner type (string, required)
812-
- `project_number`: The project's number. (number, required)
813-
814-
- **get_project** - Get project
815-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
816-
- `owner_type`: Owner type (string, required)
817-
- `project_number`: The project's number (number, required)
818-
819-
- **get_project_field** - Get project field
820-
- `field_id`: The field's id. (number, required)
821-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
822-
- `owner_type`: Owner type (string, required)
823-
- `project_number`: The project's number. (number, required)
824-
825-
- **get_project_item** - Get project item
826-
- `fields`: Specific list of field IDs to include in the response (e.g. ["102589", "985201", "169875"]). If not provided, only the title field is included. (string[], optional)
827-
- `item_id`: The item's ID. (number, required)
828-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
829-
- `owner_type`: Owner type (string, required)
830-
- `project_number`: The project's number. (number, required)
831-
832-
- **list_project_fields** - List project fields
833-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
834-
- `owner_type`: Owner type (string, required)
835-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
836-
- `project_number`: The project's number. (number, required)
837-
838-
- **list_project_items** - List project items
839-
- `fields`: Specific list of field IDs to include in the response (e.g. ["102589", "985201", "169875"]). If not provided, only the title field is included. (string[], optional)
840-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
841-
- `owner_type`: Owner type (string, required)
842-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
843-
- `project_number`: The project's number. (number, required)
844-
- `query`: Search query to filter items (string, optional)
845-
846-
- **list_projects** - List projects
847-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
848-
- `owner_type`: Owner type (string, required)
849-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
850-
- `query`: Filter projects by a search query (matches title and description) (string, optional)
851-
852-
- **update_project_item** - Update project item
853-
- `item_id`: The unique identifier of the project item. This is not the issue or pull request ID. (number, required)
854-
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
855-
- `owner_type`: Owner type (string, required)
856-
- `project_number`: The project's number. (number, required)
857-
- `updated_field`: Object consisting of the ID of the project field to update and the new value for the field. To clear the field, set value to null. Example: {"id": 123456, "value": "New Value"} (object, required)
801+
- **project_read** - Read project information
802+
- `after`: Forward pagination cursor. Use when the previous response's pageInfo.hasNextPage=true. Supply pageInfo.nextCursor as 'after' and immediately request the next page. LOOP UNTIL pageInfo.hasNextPage=false (don't stop early). Keep query, fields, and per_page identical for every page. (string, optional)
803+
- `before`: Backward pagination cursor (rare): supply to move to the preceding page using pageInfo.prevCursor. Not needed for normal forward iteration. (string, optional)
804+
- `field_id`: Field ID (required for get_project_field) (number, optional)
805+
- `fields`: Field IDs to include (e.g. ["102589", "985201"]). CRITICAL: Always provide to get field values. Without this, only titles returned. Get IDs from list_project_fields first. (string[], optional)
806+
- `item_id`: Item ID (required for get_project_item) (number, optional)
807+
- `method`: Read operation: get_project, list_projects, get_project_field, list_project_fields (call FIRST for IDs), get_project_item, list_project_items (use query + fields) (string, required)
808+
- `owner`: GitHub username or org name (case-insensitive) (string, required)
809+
- `owner_type`: Owner type: 'user' or 'org' (string, required)
810+
- `per_page`: Results per page (max 50). Keep constant across paginated requests; changing mid-sequence can complicate page traversal. (number, optional)
811+
- `project_number`: Project number (required for most methods) (number, optional)
812+
- `query`: Query string (used ONLY with list_projects and list_project_items).
813+
814+
Pattern Split:
815+
816+
1. list_projects (project metadata only):
817+
Scope: title text + open/closed state.
818+
PERMITTED qualifiers: is:open, is:closed (state), simple title terms.
819+
FORBIDDEN: is:issue, is:pr, assignee:, label:, status:, sprint-name:, parent-issue:, team-name:, priority:, etc.
820+
Examples:
821+
- roadmap is:open
822+
- is:open feature planning
823+
Reject & switch method if user intends items.
824+
825+
2. list_project_items (issues / PRs inside ONE project):
826+
MUST reflect user intent; strongly prefer explicit content type if narrowed:
827+
- "open issues" → state:open is:issue
828+
- "merged PRs" → state:merged is:pr
829+
- "items updated this week" → updated:>@today-7d (omit type only if mixed desired)
830+
Query Construction Heuristics:
831+
a. Extract type nouns: issues → is:issue | PRs, Pulls, or Pull Requests → is:pr | tasks/tickets → is:issue (ask if ambiguity)
832+
b. Map temporal phrases: "this week" → updated:>@today-7d
833+
c. Map negations: "excluding wontfix" → -label:wontfix
834+
d. Map priority adjectives: "high/sev1/p1" → priority:high OR priority:p1 (choose based on field presence)
835+
e. Map blocking relations: "blocked by 123" → parent-issue:"owner/repo#123"
836+
837+
Syntax Essentials (items):
838+
AND: space-separated.
839+
OR: comma inside one qualifier (label:bug,critical).
840+
NOT: leading '-' (-label:wontfix).
841+
Hyphenate multi-word field names.
842+
Quote multi-word values.
843+
Ranges: points:1..3, updated:<@today-30d.
844+
Wildcards: title:*crash*, label:bug*.
845+
846+
Common Qualifier Glossary (items):
847+
is:issue | is:pr | state:open|closed|merged | assignee:@me|username | label:NAME | status:VALUE |
848+
priority:p1|high | sprint-name:@current | team-name:"Backend Team" | parent-issue:"org/repo#123" |
849+
updated:>@today-7d | title:*text* | -label:wontfix | label:bug,critical | no:assignee | has:label
850+
851+
Pagination Mandate:
852+
Do not analyze until ALL pages fetched (loop while pageInfo.hasNextPage=true). Always reuse identical query, fields, per_page.
853+
854+
Recovery Guidance:
855+
If user provides ambiguous request ("show project activity") → ask clarification OR return mixed set (omit is:issue/is:pr). If user mixes project + item qualifiers in one phrase → split: run list_projects for discovery, then list_project_items for detail.
856+
857+
Never:
858+
- Infer field IDs; fetch via list_project_fields.
859+
- Drop 'fields' param on subsequent pages if field values are needed. (string, optional)
860+
861+
- **project_write** - Modify project items
862+
- `item_id`: For add: issue/PR ID. For update/delete: project item ID (not issue/PR ID) (number, required)
863+
- `item_type`: Type to add: 'issue' or 'pull_request' (required for add_project_item) (string, optional)
864+
- `method`: Write operation: add_project_item (needs item_type, item_id), update_project_item (needs item_id, updated_field), delete_project_item (needs item_id) (string, required)
865+
- `owner`: GitHub username or org name (case-insensitive) (string, required)
866+
- `owner_type`: Owner type: 'user' or 'org' (string, required)
867+
- `project_number`: Project number (number, required)
868+
- `updated_field`: Field update object (required for update_project_item). Format: {"id": 123456, "value": <value>}. Value types: text=string, single-select=option ID (number), date=ISO string, number=number. Set value to null to clear. (object, optional)
858869

859870
</details>
860871

0 commit comments

Comments
 (0)