Skip to content

Commit c1eb996

Browse files
committed
tool consolidation and prompt updates
1 parent 0b65b1b commit c1eb996

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
@@ -795,63 +795,74 @@ Options are:
795795

796796
<summary>Projects</summary>
797797

798-
- **add_project_item** - Add project item
799-
- `item_id`: The numeric ID of the issue or pull request to add to the project. (number, required)
800-
- `item_type`: The item's type, either issue or pull_request. (string, required)
801-
- `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)
802-
- `owner_type`: Owner type (string, required)
803-
- `project_number`: The project's number. (number, required)
804-
805-
- **delete_project_item** - Delete project item
806-
- `item_id`: The internal project item ID to delete from the project (not the issue or pull request ID). (number, required)
807-
- `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)
808-
- `owner_type`: Owner type (string, required)
809-
- `project_number`: The project's number. (number, required)
810-
811-
- **get_project** - Get project
812-
- `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)
813-
- `owner_type`: Owner type (string, required)
814-
- `project_number`: The project's number (number, required)
815-
816-
- **get_project_field** - Get project field
817-
- `field_id`: The field's id. (number, required)
818-
- `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)
819-
- `owner_type`: Owner type (string, required)
820-
- `project_number`: The project's number. (number, required)
821-
822-
- **get_project_item** - Get project item
823-
- `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)
824-
- `item_id`: The item's ID. (number, required)
825-
- `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)
826-
- `owner_type`: Owner type (string, required)
827-
- `project_number`: The project's number. (number, required)
828-
829-
- **list_project_fields** - List project fields
830-
- `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)
831-
- `owner_type`: Owner type (string, required)
832-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
833-
- `project_number`: The project's number. (number, required)
834-
835-
- **list_project_items** - List project items
836-
- `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)
837-
- `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)
838-
- `owner_type`: Owner type (string, required)
839-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
840-
- `project_number`: The project's number. (number, required)
841-
- `query`: Search query to filter items (string, optional)
842-
843-
- **list_projects** - List projects
844-
- `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)
845-
- `owner_type`: Owner type (string, required)
846-
- `per_page`: Number of results per page (max 100, default: 30) (number, optional)
847-
- `query`: Filter projects by a search query (matches title and description) (string, optional)
848-
849-
- **update_project_item** - Update project item
850-
- `item_id`: The unique identifier of the project item. This is not the issue or pull request ID. (number, required)
851-
- `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)
852-
- `owner_type`: Owner type (string, required)
853-
- `project_number`: The project's number. (number, required)
854-
- `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)
798+
- **project_read** - Read project information
799+
- `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)
800+
- `before`: Backward pagination cursor (rare): supply to move to the preceding page using pageInfo.prevCursor. Not needed for normal forward iteration. (string, optional)
801+
- `field_id`: Field ID (required for get_project_field) (number, optional)
802+
- `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)
803+
- `item_id`: Item ID (required for get_project_item) (number, optional)
804+
- `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)
805+
- `owner`: GitHub username or org name (case-insensitive) (string, required)
806+
- `owner_type`: Owner type: 'user' or 'org' (string, required)
807+
- `per_page`: Results per page (max 50). Keep constant across paginated requests; changing mid-sequence can complicate page traversal. (number, optional)
808+
- `project_number`: Project number (required for most methods) (number, optional)
809+
- `query`: Query string (used ONLY with list_projects and list_project_items).
810+
811+
Pattern Split:
812+
813+
1. list_projects (project metadata only):
814+
Scope: title text + open/closed state.
815+
PERMITTED qualifiers: is:open, is:closed (state), simple title terms.
816+
FORBIDDEN: is:issue, is:pr, assignee:, label:, status:, sprint-name:, parent-issue:, team-name:, priority:, etc.
817+
Examples:
818+
- roadmap is:open
819+
- is:open feature planning
820+
Reject & switch method if user intends items.
821+
822+
2. list_project_items (issues / PRs inside ONE project):
823+
MUST reflect user intent; strongly prefer explicit content type if narrowed:
824+
- "open issues" → state:open is:issue
825+
- "merged PRs" → state:merged is:pr
826+
- "items updated this week" → updated:>@today-7d (omit type only if mixed desired)
827+
Query Construction Heuristics:
828+
a. Extract type nouns: issues → is:issue | PRs, Pulls, or Pull Requests → is:pr | tasks/tickets → is:issue (ask if ambiguity)
829+
b. Map temporal phrases: "this week" → updated:>@today-7d
830+
c. Map negations: "excluding wontfix" → -label:wontfix
831+
d. Map priority adjectives: "high/sev1/p1" → priority:high OR priority:p1 (choose based on field presence)
832+
e. Map blocking relations: "blocked by 123" → parent-issue:"owner/repo#123"
833+
834+
Syntax Essentials (items):
835+
AND: space-separated.
836+
OR: comma inside one qualifier (label:bug,critical).
837+
NOT: leading '-' (-label:wontfix).
838+
Hyphenate multi-word field names.
839+
Quote multi-word values.
840+
Ranges: points:1..3, updated:<@today-30d.
841+
Wildcards: title:*crash*, label:bug*.
842+
843+
Common Qualifier Glossary (items):
844+
is:issue | is:pr | state:open|closed|merged | assignee:@me|username | label:NAME | status:VALUE |
845+
priority:p1|high | sprint-name:@current | team-name:"Backend Team" | parent-issue:"org/repo#123" |
846+
updated:>@today-7d | title:*text* | -label:wontfix | label:bug,critical | no:assignee | has:label
847+
848+
Pagination Mandate:
849+
Do not analyze until ALL pages fetched (loop while pageInfo.hasNextPage=true). Always reuse identical query, fields, per_page.
850+
851+
Recovery Guidance:
852+
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.
853+
854+
Never:
855+
- Infer field IDs; fetch via list_project_fields.
856+
- Drop 'fields' param on subsequent pages if field values are needed. (string, optional)
857+
858+
- **project_write** - Modify project items
859+
- `item_id`: For add: issue/PR ID. For update/delete: project item ID (not issue/PR ID) (number, required)
860+
- `item_type`: Type to add: 'issue' or 'pull_request' (required for add_project_item) (string, optional)
861+
- `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)
862+
- `owner`: GitHub username or org name (case-insensitive) (string, required)
863+
- `owner_type`: Owner type: 'user' or 'org' (string, required)
864+
- `project_number`: Project number (number, required)
865+
- `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)
855866

856867
</details>
857868

0 commit comments

Comments
 (0)