-
Notifications
You must be signed in to change notification settings - Fork 2
Develop #161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Develop #161
Changes from all commits
Commits
Show all changes
16 commits
Select commit
Hold shift + click to select a range
53f8ccb
PDX-0: feat(mcp): add user-facing guide prompts, tool-guide resource,…
mrdailey99 fcf9d6a
PDX-0: chore(ci): update QualityOrchestrator to floating v1 tag
mrdailey99 05e2e60
PDX-0: fix(mcp): address Copilot review comments on PR #153
mrdailey99 021c6af
Merge pull request #154 from ProvarTesting/fix/ci-quality-orchestrato…
mrdailey99 d3bbd93
Merge branch 'develop' into feature/agent-framework-guides
mrdailey99 bf68e54
Bump package json version to 1.5.0-beta.18
mrdailey99 d7532c3
Bump version to 1.5.0-beta.18 in server.json
mrdailey99 34c85f8
Merge pull request #153 from ProvarTesting/feature/agent-framework-gu…
mrdailey99 19000c0
PDX-463: feat(mcp): fetch NitroX component packages from factPackages…
mrdailey99 444d7e0
PDX-463: fix(mcp): correct factPackages path layout and fix lint warn…
mrdailey99 019bb87
PDX-463: fix(mcp): address PR review comments on fetch-nitrox-packages
mrdailey99 b2d0afc
Merge pull request #156 from ProvarTesting/feature/PDX-463-nitrox-com…
mrdailey99 cccf37f
PDX-465: feat(mcp): add bin entry to enable zero-install npx MCP serv…
mrdailey99 8773682
PDX-464: fetch NitroX schemas from internal source at build time (#157)
mrdailey99 8d483bb
PDX-466: feat(mcp): add AJV JSON schema validation to provar_nitrox_v…
mrdailey99 c9ef921
PDX-467: chore(docs): bump version to 1.5.0 stable and remove @beta i…
mrdailey99 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,255 @@ | ||
| You are executing the provardx-cli development git workflow. Follow these steps in order. Stop and confirm with the user at each CONFIRM point before proceeding. | ||
|
|
||
| --- | ||
|
|
||
| ## Step 0 — Establish the Jira ticket (planning phase) | ||
|
|
||
| Ask the user: | ||
|
|
||
| > "Do you have a PDX ticket for this work? | ||
| > A) Yes — give me the number | ||
| > B) No — create one now as part of planning | ||
| > C) No ticket needed (framework/chore work)" | ||
|
|
||
| --- | ||
|
|
||
| ### Option A — Existing ticket | ||
|
|
||
| User provides the ticket number. Set `TICKET = PDX-<number>`. | ||
|
|
||
| Fetch the ticket to confirm it exists and read its summary and status: | ||
|
|
||
| - Call `getAccessibleAtlassianResources` to get the cloudId for your Jira instance, then use `getJiraIssue` (cloudId: `<from above>`, issueIdOrKey: `PDX-<number>`) | ||
| - Show the user: ticket summary, current status, and URL | ||
| - If the ticket is already Closed, warn the user before proceeding | ||
|
|
||
| Skip to **Derive branch variables** below. | ||
|
|
||
| --- | ||
|
|
||
| ### Option B — Create ticket now (planning phase) | ||
|
|
||
| Ask the user a single compound question to gather everything at once: | ||
|
|
||
| > "Tell me about the work — I'll draft the ticket from your answer: | ||
| > | ||
| > 1. What should this change do? (one sentence — becomes the ticket summary) | ||
| > 2. Is it a new feature, bug fix, infrastructure/CI work, research spike, or internal task? | ||
| > 3. Why is it needed? What problem or requirement drives it? | ||
| > 4. How will we know it's done? (acceptance criteria — list conditions) | ||
| > 5. Anything explicitly out of scope?" | ||
|
|
||
| From the user's answer, draft the full ticket content. Use your judgment to infer issue type if the user is vague. Do not ask follow-up questions unless a critical field (summary or acceptance criteria) is completely missing. | ||
|
|
||
| **Issue type mapping:** | ||
| | Work described | Issue type | | ||
| |----------------|-----------| | ||
| | New user-facing capability | Story | | ||
| | Something broken | Bug | | ||
| | CI, infra, tooling, architecture | Enabler | | ||
| | Research / investigation / prototype | Spike | | ||
| | Internal work, no user impact | Task | | ||
|
|
||
| **CONFIRM**: Show the drafted ticket for review before creating: | ||
|
|
||
| ``` | ||
| Summary: <summary> | ||
| Type: <issueTypeName> | ||
| Label: provardx-cli | ||
|
|
||
| Description: | ||
| ## Background | ||
| <background> | ||
|
|
||
| ## Acceptance Criteria | ||
| - [ ] <criterion 1> | ||
| - [ ] <criterion 2> | ||
|
|
||
| ## Notes | ||
| <out of scope / caveats> | ||
| ``` | ||
|
|
||
| > "Does this look right? I'll create the Jira ticket now." | ||
|
|
||
| Once confirmed, create the ticket using the `createJiraIssue` MCP tool: | ||
|
|
||
| - `cloudId`: `<from getAccessibleAtlassianResources>` | ||
| - `projectKey`: `PDX` | ||
| - `issueTypeName`: as chosen above | ||
| - `summary`: as drafted | ||
| - `description`: full description in markdown | ||
| - `contentFormat`: `markdown` | ||
| - `additional_fields`: `{ "labels": ["provardx-cli"] }` | ||
|
|
||
| The tool returns the new ticket key (e.g. `PDX-193`). Set `TICKET = PDX-<returned-number>`. | ||
|
|
||
| Show the user: `Ticket created: https://provartesting.atlassian.net/browse/<TICKET>` | ||
|
|
||
| --- | ||
|
|
||
| ### Option C — No ticket (PDX-0) | ||
|
|
||
| Set `TICKET = PDX-0`. No Jira steps. Use this only for framework chores, internal tooling, or changes with no observable user or system behaviour change. | ||
|
|
||
| --- | ||
|
|
||
| ### Derive branch variables | ||
|
|
||
| Ask: "What type of change is this? (feature / fix)" — skip if already obvious from the issue type. | ||
|
|
||
| Ask for a short branch slug (kebab-case, ≤ 30 chars, no spaces). | ||
|
|
||
| Derive: | ||
|
|
||
| - `BRANCH_TYPE` = `feature` or `fix` | ||
| - `BRANCH` = `feature/PDX-<number>-<slug>` or `fix/PDX-<number>-<slug>` (or `feature/<slug>` for PDX-0) | ||
|
|
||
| **CONFIRM**: "I'll create branch `<BRANCH>` off `develop`. Proceed?" | ||
|
|
||
| --- | ||
|
|
||
| ## Step 1 — Create worktree and install dependencies | ||
|
|
||
| ```sh | ||
| # From the main repo root | ||
| git worktree add .claude/worktrees/<BRANCH> -b <BRANCH> develop | ||
|
|
||
| # Install node_modules so husky hooks work — ALWAYS do this in a new worktree | ||
| cd .claude/worktrees/<BRANCH> && yarn install | ||
| ``` | ||
|
|
||
| The `yarn install` step is mandatory. Without it, the pre-commit hook cannot find `wireit` and will fail with "wireit is not recognized". | ||
|
|
||
| --- | ||
|
|
||
| ## Step 2 — Implement the change | ||
|
|
||
| Work in the worktree at `.claude/worktrees/<BRANCH>/`. | ||
|
|
||
| Before every commit attempt, run in the worktree directory: | ||
|
|
||
| ```sh | ||
| yarn compile | ||
| node_modules/.bin/nyc node_modules/.bin/mocha "test/**/*.test.ts" | ||
| node scripts/mcp-smoke.cjs 2>/dev/null | ||
| yarn lint | ||
| ``` | ||
|
|
||
| Fix any failures before staging. Do not move to Step 3 until all four pass. | ||
|
|
||
| --- | ||
|
|
||
| ## Step 3 — Stage and commit | ||
|
|
||
| Stage files explicitly — never `git add -A`: | ||
|
|
||
| ```sh | ||
| git add <file1> <file2> ... | ||
| ``` | ||
|
|
||
| Commit with the required PDX format: | ||
|
|
||
| ```sh | ||
| git commit -m "$(cat <<'EOF' | ||
| <TICKET>: <type>(<scope>): <subject under 72 chars> | ||
|
|
||
| RCA: <at least 40 chars — requirement or root cause> | ||
| Fix: <at least 40 chars — what was implemented or changed> | ||
| EOF | ||
| )" | ||
| ``` | ||
|
|
||
| Valid `type` values: `feat`, `fix`, `test`, `docs`, `chore`, `refactor` | ||
| Valid `scope` values: `mcp`, `prompts`, `resources`, `cli`, `test`, `docs`, `ci` | ||
|
|
||
| If the commit-msg hook rejects the message, read the error and fix the message. **Do not use `--no-verify` unless the user explicitly approves it.** | ||
|
|
||
| --- | ||
|
|
||
| ## Step 4 — Push and open PR | ||
|
|
||
| ```sh | ||
| git push -u origin <BRANCH> | ||
| ``` | ||
|
|
||
| The pre-push hook runs `yarn build && yarn test` (60–120 seconds). If it fails, fix the issue, commit the fix (Step 3 format), and push again. | ||
|
|
||
| Open the PR: | ||
|
|
||
| ```sh | ||
| gh pr create \ | ||
| --base develop \ | ||
| --title "<TICKET>: <short description>" \ | ||
| --body "$(cat <<'EOF' | ||
| ## Summary | ||
| - <bullet> | ||
|
|
||
| ## Jira | ||
| https://provartesting.atlassian.net/browse/<TICKET> | ||
|
|
||
| ## Test plan | ||
| - [ ] yarn compile passes | ||
| - [ ] yarn test:only passes | ||
| - [ ] mcp-smoke.cjs passes | ||
| - [ ] yarn lint passes | ||
|
|
||
| ## Changes | ||
| - <file>: <what changed> | ||
| EOF | ||
| )" | ||
| ``` | ||
|
|
||
| Omit the `## Jira` section for `PDX-0` work. | ||
|
|
||
| **CONFIRM**: Show the user the PR URL and ask: "PR is open. Should I check the Copilot review now?" | ||
|
|
||
| --- | ||
|
|
||
| ## Step 5 — Address Copilot review | ||
|
|
||
| ```sh | ||
| gh pr view <pr-number> --comments | ||
| gh pr checks <pr-number> | ||
| ``` | ||
|
|
||
| For each Copilot comment: | ||
|
|
||
| - **Valid concern** → fix in the worktree, commit (Step 3 format), push | ||
| - **Not applicable** → reply explaining why: `gh pr comment <pr-number> --body "..."` | ||
| - **Security comment** → always address; never dismiss without strong justification | ||
|
|
||
| --- | ||
|
|
||
| ## Step 6 — Merge and close ticket | ||
|
|
||
| **CONFIRM**: "All checks pass. Should I merge the PR?" | ||
|
|
||
| ```sh | ||
| gh pr merge <pr-number> --squash --delete-branch | ||
| ``` | ||
|
|
||
| For ticketed work (non-PDX-0): transition the Jira ticket to Closed. | ||
|
|
||
| - Web: `https://provartesting.atlassian.net/browse/<TICKET>` | ||
| - MCP: `transitionJiraIssue` (cloudId: `<from getAccessibleAtlassianResources>`) | ||
|
|
||
| Clean up the worktree: | ||
|
|
||
| ```sh | ||
| git worktree remove .claude/worktrees/<BRANCH> | ||
| git worktree prune | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## Hook failures quick-reference | ||
|
|
||
| | Hook | Failure | Fix | | ||
| | ---------- | -------------------------- | -------------------------------------------------------------- | | ||
| | pre-commit | `wireit is not recognized` | Run `yarn install` in the worktree first | | ||
| | pre-commit | ESLint violation | Fix the violation, `git add` the file, retry | | ||
| | pre-commit | Prettier | Run `yarn pretty-quick --staged`, restage, retry | | ||
| | commit-msg | Wrong format | Read error, rewrite message with `git commit --amend -m "..."` | | ||
| | commit-msg | Lines too short | `RCA:` or `Req:` and `Fix:` each need ≥ 40 characters | | ||
| | pre-push | Compile error | Fix TypeScript error, commit, push again | | ||
| | pre-push | Test failure | Fix the test, commit, push again | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.