Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .claude/skills/project-manager-init/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ Create a `PROJECT_MANAGE.md` file in the repository root that stores project man
Before doing anything else, run these checks **in order**:

1. **gh CLI authentication**: Run `gh auth status`. If not authenticated, stop and tell the user:

```
GitHub CLI is not authenticated. Please run:
$ gh auth login
```

2. **Project scope permission**: Attempt `gh project list --owner <owner> --limit 1`. If it fails with a 403 or permission error, stop and tell the user:

```
The GitHub CLI token lacks the "project" scope. Please run:
$ gh auth refresh -s project
Expand Down Expand Up @@ -88,6 +90,7 @@ Have a brief interactive discussion to establish:
Write the file with YAML frontmatter containing all machine-readable IDs, followed by human-readable convention rules in markdown.

**Frontmatter** must include:

```yaml
---
project_url: <full URL>
Expand All @@ -114,6 +117,7 @@ status_options:
```

**Body** must include the agreed-upon conventions in clear markdown sections:

- Issue Template
- Splitting Rules
- Priority Definitions
Expand Down
29 changes: 23 additions & 6 deletions .claude/skills/project-manager-new/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ Create one or more GitHub issues that follow the repository's project management
Run these checks **in order** before proceeding:

1. **gh CLI authentication**: Run `gh auth status`. If not authenticated, stop and instruct:

```
GitHub CLI is not authenticated. Please run:
$ gh auth login
```

2. **Project scope permission**: Attempt a lightweight project API call using the project info from `PROJECT_MANAGE.md` frontmatter. If permission error, stop and instruct:

```
The GitHub CLI token lacks the "project" scope. Please run:
$ gh auth refresh -s project
Expand All @@ -38,19 +40,22 @@ Run these checks **in order** before proceeding:
### Step 1: Parse Configuration

Read `PROJECT_MANAGE.md` and extract:

- **Frontmatter**: project_node_id, owner, field_ids, priority_options, size_options, status_options, backlog_status, backlog_status_id
- **Body**: Issue template format, splitting rules, priority/size definitions

### Step 2: Understand the Request

The user provides a natural-language description of the work as `$ARGUMENTS`. Analyze it to understand:

- What needs to change
- Which packages/files are affected
- The motivation (bug fix, feature, refactoring, spec compliance, etc.)

### Step 3: Explore the Codebase

Based on the description, explore the codebase to:

- Identify affected files and their current state
- Understand package boundaries and dependency relationships
- Assess the scope of changes needed
Expand All @@ -59,11 +64,13 @@ Based on the description, explore the codebase to:
### Step 4: Draft the Issue(s)

Using the issue template from PROJECT_MANAGE.md, draft the issue body with:

- All required template sections filled in
- Concrete file paths and change descriptions (not vague)
- Verification steps that can actually be run

Assign **Priority**, **Size**, and **Estimate** based on:

- The definitions in PROJECT_MANAGE.md
- The actual codebase analysis from Step 3

Expand All @@ -87,6 +94,7 @@ Proceed? [create all / modify / cancel]
```

Splitting guidelines:

- Each sub-issue should be independently deliverable (single PR)
- Respect package boundaries when possible
- Maintain clear blocking relationships between split issues
Expand All @@ -97,6 +105,7 @@ Splitting guidelines:
Fetch **all open (non-Done) issues** from the project board — not just Backlog items. An issue currently In Progress (e.g., a large refactoring) can block the new issue, or the new issue might block existing in-flight work.

Analyze whether the new issue(s):

- **Are blocked by** any existing open issue (e.g., depends on a type change, refactoring, or spec migration that's already planned or in progress)
- **Block** any existing open issue (e.g., the new issue introduces something an existing issue depends on)

Expand Down Expand Up @@ -130,12 +139,20 @@ Upon user approval:
4. **Connect blocking relationships**: For split issues and existing backlog relationships, use GraphQL `addBlockedBy` mutation:
```graphql
mutation {
addBlockedBy(input: {
issueId: "<blocked issue node ID>",
blockingIssueId: "<blocking issue node ID>"
}) {
issue { number title }
blockingIssue { number title }
addBlockedBy(
input: {
issueId: "<blocked issue node ID>"
blockingIssueId: "<blocking issue node ID>"
}
) {
issue {
number
title
}
blockingIssue {
number
title
}
}
}
```
Expand Down
3 changes: 1 addition & 2 deletions .gh-symphony/context.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ text_fields:
name: Linked pull requests
data_type: LINKED_PULL_REQUESTS

repositories:
[]
repositories: []

detected_environment:
packageManager: pnpm
Expand Down
61 changes: 33 additions & 28 deletions .gh-symphony/reference-workflow.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,67 @@
# Reference WORKFLOW.md — gh-symphony

# This file is a reference template for authoring WORKFLOW.md.

# AI agents reference this file (via the /gh-symphony skill) when designing WORKFLOW.md.

# Do not edit this file directly.

---

# ═══ FRONT MATTER FIELD REFERENCE ═══

# All front matter fields supported by the gh-symphony parser are listed below.

tracker:
kind: github-project
provider:
project_id: PVT_REPLACE_WITH_YOUR_PROJECT_ID
state_field: Status
blocker_check_states: [{first active state}]
kind: github-project
provider:
project_id: PVT_REPLACE_WITH_YOUR_PROJECT_ID
Comment on lines +16 to +18

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve nested workflow keys in the reference

When an agent copies this checked-in reference to author WORKFLOW.md, kind, provider, and project_id are now root-level YAML keys rather than children of tracker; the same flattening affects polling, workspace, hooks, agent, and codex. The workflow parser reads tracker.kind and tracker.provider, so the resulting configuration loses the selected adapter and its project ID. Keep the raw YAML indented, or exclude/restructure this mixed Markdown/YAML file so Prettier cannot flatten it.

AGENTS.md reference: AGENTS.md:L5-L7

Useful? React with 👍 / 👎.

state_field: Status
blocker_check_states: [{first active state}]

active_states: [{active column names}]
terminal_states: [{terminal column names}]
active_states: [{active column names}]
terminal_states: [{terminal column names}]

polling:
interval_ms: 30000
interval_ms: 30000

workspace:
root: .runtime/symphony-workspaces
root: .runtime/symphony-workspaces

hooks:
after_create: hooks/after_create.sh # npm/yarn/pnpm install script
before_run: null
after_run: null
before_remove: null
timeout_ms: 60000
after_create: hooks/after_create.sh # npm/yarn/pnpm install script
before_run: null
after_run: null
before_remove: null
timeout_ms: 60000

agent:
max_concurrent_agents: 10
max_retry_backoff_ms: 30000
retry_base_delay_ms: 1000
max_turns: 20
max_concurrent_agents: 10
max_retry_backoff_ms: 30000
retry_base_delay_ms: 1000
max_turns: 20

codex:
command: codex app-server
read_timeout_ms: 5000
turn_timeout_ms: 3600000
stall_timeout_ms: 300000
command: codex app-server
read_timeout_ms: 5000
turn_timeout_ms: 3600000
stall_timeout_ms: 300000

---

# ═══ PROMPT BODY REFERENCE ═══

# GitHub Project adaptation of the Elixir Symphony reference prompt.

## Status Map

| Status | Role | Agent Action |
| ------ | ---- | ------------ |
| Backlog | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |
| Ready | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |
| Status | Role | Agent Action |
| ----------- | ----- | --------------------------------------------------------- |
| Backlog | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |
| Ready | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |
| In progress | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |
| In review | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |
| Done | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |
| In review | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |
| Done | unset | Role unset. Must be explicitly configured in WORKFLOW.md. |

## Default Posture

Expand Down
11 changes: 11 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Dependencies and generated build/test output
node_modules/
dist/
coverage/

# Runtime state and package-manager output
.runtime/
pnpm-lock.yaml

# Prettier's configuration is intentionally maintained by hand
prettier.config.mjs
2 changes: 1 addition & 1 deletion .sisyphus/boulder.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@
],
"plan_name": "init-workflow-ecosystem",
"agent": "atlas"
}
}
4 changes: 4 additions & 0 deletions .sisyphus/notepads/gh-cli-auth-migration/decisions.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,20 @@
# Decisions — gh-cli-auth-migration

## Token Caching Strategy

- Orchestrator caches token at startup (1x `gh auth token` call), not per-poll
- Avoids subprocess overhead in 30s polling hot path

## Scope Check Behavior

- Fine-grained PATs report empty scopes → treat as valid (skip scope check)
- Required scopes: `["repo", "read:org", "project"]`

## Token Broker

- `GITHUB_TOKEN_BROKER_URL/SECRET` pattern MUST NOT be modified
- Keep existing broker code intact

## control-plane

- Explicitly out of scope — separate auth system, do not touch
7 changes: 6 additions & 1 deletion .sisyphus/notepads/gh-cli-auth-migration/learnings.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@
## Task 11: Full Verification Suite

### Key Findings

1. **Lint**: Fixed one unused eslint-disable directive in ansi.ts
- The `// eslint-disable-next-line no-control-regex` comment was unnecessary
- The regex pattern doesn't trigger the rule it was disabling
Expand All @@ -146,7 +147,9 @@
- Verified by testing on HEAD~1 commit

### Verification Scope

The gh-cli-auth-migration project includes:

- packages/cli (primary)
- packages/core (dependency)
- packages/orchestrator (dependency)
Expand All @@ -159,7 +162,9 @@ The gh-cli-auth-migration project includes:
All of these pass lint, test, typecheck, and build.

### Control-Plane Status

The control-plane app has pre-existing failures unrelated to gh-cli-auth-migration:

- Missing export in orchestrator-status-client
- Missing module '../../../packages/worker/src/runtime'
- Type mismatch in workspace-orchestrator
Expand All @@ -168,8 +173,8 @@ The control-plane app has pre-existing failures unrelated to gh-cli-auth-migrati
These are separate concerns and should be addressed in a separate task.

### Commit
- ba6e149: fix: remove unused eslint-disable directive in ansi.ts

- ba6e149: fix: remove unused eslint-disable directive in ansi.ts

## F4 Scope Fidelity Audit (2026-03-13)

Expand Down
3 changes: 3 additions & 0 deletions .sisyphus/notepads/init-workflow-ecosystem/learnings.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,15 @@
- Test files: \*.test.ts alongside source files

## [Task 6] Core Skill Templates

- gh-symphony.ts: generateGhSymphonySkill() — design/refine/validate WORKFLOW.md
- gh-project.ts: generateGhProjectSkill() — GitHub Project v2 status management
- Dynamic Column ID table from ctx.statusColumns
- No {{ }} in skill output — template vars documented in backtick code
- Gotcha: "No unsupported `{{variable}}` patterns" in Validate Mode section triggered the double-brace test; replaced with prose description

## [Task 7] Workflow Skill Templates

- commit.ts: generateCommitSkill() — conventional commit format, logical units, test before commit
- push.ts: generatePushSkill() — git push workflow, no --force, verify CI starts
- pull.ts: generatePullSkill() — git fetch + merge, conflict resolution, record evidence
Expand All @@ -62,6 +64,7 @@
- Commit: feat(cli): add workflow skill templates (commit, push, pull, land)

## [Task 8] Wire Ecosystem into Init Command

- writeEcosystem() helper: orchestrates detectEnvironment → buildContextYaml → generateReferenceWorkflow → writeAllSkills
- writeContextYaml(outputDir, ctx) expects repo root as outputDir — it appends .gh-symphony/context.yaml internally
- `as const` on test fixtures causes readonly array incompatibility with mutable ProjectDetail types — use explicit type annotations instead
Expand Down
6 changes: 5 additions & 1 deletion docker-compose.local.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ services:
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-github_symphony}"]
test:
[
"CMD-SHELL",
"pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-github_symphony}",
]
interval: 5s
timeout: 5s
retries: 20
Expand Down
6 changes: 5 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,11 @@ services:
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-github_symphony}"]
test:
[
"CMD-SHELL",
"pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-github_symphony}",
]
interval: 5s
timeout: 5s
retries: 20
Expand Down
16 changes: 8 additions & 8 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,14 @@ Provider-specific compact adapter profiles and host-side agent-tool contracts:

## reports/

| Document | Status |
| ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| [2026-09-05-maintainability-and-reliability-review.md](reports/2026-09-05-maintainability-and-reliability-review.md) | Review complete — proposed fixes and trade-offs for CI, orchestration, storage, and Linear normalization |
| [2026-05-04-single-repo-orchestrator-feasibility.md](reports/2026-05-04-single-repo-orchestrator-feasibility.md) | Concluded — promoted to an ADR |
| [2026-06-25-spec-gap-analysis.md](reports/2026-06-25-spec-gap-analysis.md) | Retired — living-map upkeep stopped, final snapshot |
| [2026-07-06-risk-audit-report.md](reports/2026-07-06-risk-audit-report.md) | Awaiting review (issues not filed) |
| [2026-07-19-github-api-rate-limit-audit.md](reports/2026-07-19-github-api-rate-limit-audit.md) | Partially implemented (R1.5 shipped) |
| [2026-08-28-upstream-spec-drift-research.md](reports/2026-08-28-upstream-spec-drift-research.md) | Complete (Epic #651 scope) — see its documented carve-outs; C1–C13/D1–D8 follow-up shipped in [#675](https://github.com/hojinzs/github-symphony/issues/675) |
| Document | Status |
| -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [2026-09-05-maintainability-and-reliability-review.md](reports/2026-09-05-maintainability-and-reliability-review.md) | Review complete — proposed fixes and trade-offs for CI, orchestration, storage, and Linear normalization |
| [2026-05-04-single-repo-orchestrator-feasibility.md](reports/2026-05-04-single-repo-orchestrator-feasibility.md) | Concluded — promoted to an ADR |
| [2026-06-25-spec-gap-analysis.md](reports/2026-06-25-spec-gap-analysis.md) | Retired — living-map upkeep stopped, final snapshot |
| [2026-07-06-risk-audit-report.md](reports/2026-07-06-risk-audit-report.md) | Awaiting review (issues not filed) |
| [2026-07-19-github-api-rate-limit-audit.md](reports/2026-07-19-github-api-rate-limit-audit.md) | Partially implemented (R1.5 shipped) |
| [2026-08-28-upstream-spec-drift-research.md](reports/2026-08-28-upstream-spec-drift-research.md) | Complete (Epic #651 scope) — see its documented carve-outs; C1–C13/D1–D8 follow-up shipped in [#675](https://github.com/hojinzs/github-symphony/issues/675) |

## adr/

Expand Down
Loading
Loading