This document describes the GitHub Projects V2 setup for the Langstar repository.
Project Name: langstar
Project Number: 4
Project ID: PVT_kwHOAAImgs4BGe4B
Description: A project for governing LangStar issues
Visibility: Public
URL: https://github.com/users/codekiln/projects/4
To access GitHub Projects V2 via the API, use the GITHUB_PROJECT_PAT environment variable (defined in .devcontainer/.env). This PAT has the necessary permissions to read and modify project data. This is not available in a github actions setting; it's only available locally.
This project uses two different github credential environment variables because it's not possible to combine fine grained personal access tokens (which are advisable for AI coding to scope down permissions) with a token that allows read/write to GitHub Projects, AFAICT. As a result, we have a GITHUB_PAT which is a fine-grained project access token and a GH_PROJECT_PAT / GITHUB_PROJECT_PAT which has ONLY the permissions to read and write projects.
export GH_TOKEN=$GITHUB_PROJECT_PAT
gh api graphql -f query='...'The langstar project includes the following fields:
| Field Name | Data Type | Field ID | Description |
|---|---|---|---|
| Title | TITLE | PVTF_lAHOAAImgs4BGe4Bzg3g-NI |
Issue/PR title |
| Assignees | ASSIGNEES | PVTF_lAHOAAImgs4BGe4Bzg3g-NM |
Who is working on this |
| Status | SINGLE_SELECT | PVTSSF_lAHOAAImgs4BGe4Bzg3g-NQ |
Current work status |
| Labels | LABELS | PVTF_lAHOAAImgs4BGe4Bzg3g-NU |
Issue labels |
| Linked pull requests | LINKED_PULL_REQUESTS | PVTF_lAHOAAImgs4BGe4Bzg3g-NY |
Associated PRs |
| Milestone | MILESTONE | PVTF_lAHOAAImgs4BGe4Bzg3g-Nc |
Release milestone |
| Repository | REPOSITORY | PVTF_lAHOAAImgs4BGe4Bzg3g-Ng |
Source repository |
| Reviewers | REVIEWERS | PVTF_lAHOAAImgs4BGe4Bzg3g-Nk |
PR reviewers |
| Parent issue | PARENT_ISSUE | PVTF_lAHOAAImgs4BGe4Bzg3g-No |
Parent issue link |
| Sub-issues progress | SUB_ISSUES_PROGRESS | PVTF_lAHOAAImgs4BGe4Bzg3g-Ns |
Child issue tracking |
The Status field is the primary workflow field with three states:
| Status Name | Option ID | Description |
|---|---|---|
| Todo | f75ad846 |
This item hasn't been started |
| In Progress | 47fc9ee4 |
This is actively being worked on |
| Done | 98236657 |
This has been completed |
Issues should follow this progression:
- Todo - New issues start here
- In Progress - Move here when work begins
- Done - Move here when work is complete
gh api graphql -f query='
query {
user(login: "codekiln") {
projectsV2(first: 10) {
nodes {
id
number
title
shortDescription
url
}
}
}
}'gh api graphql -f query='
query {
node(id: "PVT_kwHOAAImgs4BGe4B") {
... on ProjectV2 {
id
number
title
fields(first: 20) {
nodes {
... on ProjectV2SingleSelectField {
id
name
options {
id
name
description
}
}
}
}
}
}
}'gh issue view <issue-number> --json projectItemsExample output:
{
"projectItems": [
{
"status": {
"optionId": "f75ad846",
"name": "Todo"
},
"title": "langstar"
}
]
}gh api graphql -f query='
mutation {
addProjectV2ItemById(input: {
projectId: "PVT_kwHOAAImgs4BGe4B"
contentId: "<issue-node-id>"
}) {
item {
id
}
}
}'gh api graphql -f query='
mutation {
updateProjectV2ItemFieldValue(input: {
projectId: "PVT_kwHOAAImgs4BGe4B"
itemId: "<item-id>"
fieldId: "PVTSSF_lAHOAAImgs4BGe4Bzg3g-NQ"
value: {
singleSelectOptionId: "47fc9ee4"
}
}) {
projectV2Item {
id
}
}
}'The GitHub project integrates with the issue-driven development workflow described in github-workflow.md. Project status updates are managed manually or via the Claude Code skill.
Use the update-github-issue-project-status Claude skill to manually update project status:
Use the update-github-issue-project-status skill to set issue #42 to "in_progress"
The skill supports:
- Single or batch issue updates (comma-separated)
- All three status values: "todo", "in_progress", "done"
- Automatic project item creation if needed
See Issue #38 for ongoing research into native GitHub Projects V2 automations that could provide automatic status updates without custom code
If you encounter "Resource not accessible" errors, ensure the PAT has these scopes:
project- Read/write access to projectsrepo- Access to repository issues and PRs
GitHub uses global node IDs for GraphQL queries. To get an issue's node ID:
gh issue view <issue-number> --json id- GitHub Workflow - Issue-driven development process
- Git SCM Conventions - Commit message standards
- GitHub Projects V2 API Documentation