Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,13 @@ Read-only Python utilities for Jira, Confluence, and Bitbucket integration, supp

```powershell
# Get a single issue (inline Python one-liner)
python -c "import sys; sys.path.insert(0, '.github/skills/atlassian-readonly-skills/scripts'); from jira_issues import jira_get_issue; print(jira_get_issue('LT-22382'))"
python -c "import sys; sys.path.insert(0, '.claude/skills/atlassian-readonly-skills/scripts'); from jira_issues import jira_get_issue; print(jira_get_issue('LT-22382'))"

# Search for issues (JQL query)
python -c "import sys; sys.path.insert(0, '.github/skills/atlassian-readonly-skills/scripts'); from jira_search import jira_search; print(jira_search('project = LT AND status = Open'))"
python -c "import sys; sys.path.insert(0, '.claude/skills/atlassian-readonly-skills/scripts'); from jira_search import jira_search; print(jira_search('project = LT AND status = Open'))"

# Get issue workflow transitions
python -c "import sys; sys.path.insert(0, '.github/skills/atlassian-readonly-skills/scripts'); from jira_workflow import jira_get_transitions; print(jira_get_transitions('LT-22382'))"
python -c "import sys; sys.path.insert(0, '.claude/skills/atlassian-readonly-skills/scripts'); from jira_workflow import jira_get_transitions; print(jira_get_transitions('LT-22382'))"
```

Use the script modules in this skill directly.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,16 @@ Python utilities for Jira, Confluence, and Bitbucket integration, supporting bot

```powershell
# Create a new issue
python -c "import sys; sys.path.insert(0, '.github/skills/atlassian-skills/scripts'); from jira_issues import jira_create_issue; print(jira_create_issue('LT', 'Issue title', 'Bug'))"
python -c "import sys; sys.path.insert(0, '.claude/skills/atlassian-skills/scripts'); from jira_issues import jira_create_issue; print(jira_create_issue('LT', 'Issue title', 'Bug'))"

# Update an existing issue
python -c "import sys; sys.path.insert(0, '.github/skills/atlassian-skills/scripts'); from jira_issues import jira_update_issue; print(jira_update_issue('LT-22382', summary='Updated title'))"
python -c "import sys; sys.path.insert(0, '.claude/skills/atlassian-skills/scripts'); from jira_issues import jira_update_issue; print(jira_update_issue('LT-22382', summary='Updated title'))"

# Add a comment
python -c "import sys; sys.path.insert(0, '.github/skills/atlassian-skills/scripts'); from jira_issues import jira_add_comment; print(jira_add_comment('LT-22382', 'Comment text'))"
python -c "import sys; sys.path.insert(0, '.claude/skills/atlassian-skills/scripts'); from jira_issues import jira_add_comment; print(jira_add_comment('LT-22382', 'Comment text'))"

# Transition issue status
python -c "import sys; sys.path.insert(0, '.github/skills/atlassian-skills/scripts'); from jira_workflow import jira_transition_issue; print(jira_transition_issue('LT-22382', 'In Progress'))"
python -c "import sys; sys.path.insert(0, '.claude/skills/atlassian-skills/scripts'); from jira_workflow import jira_transition_issue; print(jira_transition_issue('LT-22382', 'In Progress'))"
```

For read-only operations (get issue, search, get comments), use `atlassian-readonly-skills` instead.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Then proceed through the steps below.
Use the `atlassian-readonly-skills` scripts to get the issue:

```powershell
python -c "import sys; sys.path.insert(0, '.github/skills/atlassian-readonly-skills/scripts'); from jira_issues import jira_get_issue; print(jira_get_issue('LT-XXXXX'))"
python -c "import sys; sys.path.insert(0, '.claude/skills/atlassian-readonly-skills/scripts'); from jira_issues import jira_get_issue; print(jira_get_issue('LT-XXXXX'))"
```

Extract and present to the user:
Expand All @@ -76,7 +76,7 @@ the user for their JIRA username and assign it:
# Assign the issue (Data Center uses 'name' field)
python -c "
import sys, json
sys.path.insert(0, '.github/skills/atlassian-skills/scripts')
sys.path.insert(0, '.claude/skills/atlassian-skills/scripts')
from jira_issues import jira_update_issue
print(jira_update_issue('LT-XXXXX', assignee='username'))
"
Expand All @@ -94,15 +94,15 @@ print(jira_update_issue('LT-XXXXX', assignee='username'))
# Get available transitions
python -c "
import sys
sys.path.insert(0, '.github/skills/atlassian-readonly-skills/scripts')
sys.path.insert(0, '.claude/skills/atlassian-readonly-skills/scripts')
from jira_workflow import jira_get_transitions
print(jira_get_transitions('LT-XXXXX'))
"

# Transition (use the ID for "In Progress" from above)
python -c "
import sys
sys.path.insert(0, '.github/skills/atlassian-skills/scripts')
sys.path.insert(0, '.claude/skills/atlassian-skills/scripts')
from jira_workflow import jira_transition_issue
print(jira_transition_issue('LT-XXXXX', 'TRANSITION_ID'))
"
Expand Down Expand Up @@ -350,7 +350,7 @@ PR link:
```powershell
python -c "
import sys
sys.path.insert(0, '.github/skills/atlassian-skills/scripts')
sys.path.insert(0, '.claude/skills/atlassian-skills/scripts')
from jira_issues import jira_add_comment
comment = '''Fix implemented and PR created.

Expand Down
File renamed without changes.
File renamed without changes.
16 changes: 11 additions & 5 deletions .github/AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# FieldWorks Agentic Instructions
# FieldWorks GitHub Compatibility

Short repo-level instructions for agents.
This folder exists for GitHub-required repository configuration and Copilot
entrypoints.

## Build and test

Expand All @@ -10,8 +11,11 @@ Short repo-level instructions for agents.

## Documentation model

- Keep AGENTS guidance minimal and requirement-only.
- Source of prescriptive constraints is `.github/instructions/*.instructions.md`.
- Shared standing guidance lives in `../AGENTS.md`.
- GitHub-required custom instructions live in `.github/copilot-instructions.md`
and `.github/instructions/*.instructions.md`.
- Claude-only workflows live in `../.claude/skills/` and should not be
duplicated under `.github/`.

## Serena operating model

Expand All @@ -32,14 +36,16 @@ Short repo-level instructions for agents.

## Relevant files

- `../AGENTS.md`
- `../CLAUDE.md`
- `.github/instructions/build.instructions.md`
- `.github/instructions/navigation.instructions.md`
- `.github/instructions/testing.instructions.md`
- `.github/instructions/managed.instructions.md`
- `.github/instructions/native.instructions.md`
- `.github/instructions/installer.instructions.md`
- `.github/rubrics/*.yaml`
- `.github/skills/rubric-verify/SKILL.md`
- `../.claude/skills/rubric-verify/SKILL.md`
- `Src/AGENTS.md`
- `FLExInstaller/AGENTS.md`

Expand Down
49 changes: 33 additions & 16 deletions .github/AI_GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -1,33 +1,44 @@
# AI guidance governance

## Purpose
This repo uses a **tool-agnostic, agent-first** documentation strategy:
- Component knowledge lives with the component (`Src/**/AGENTS.md`).
- A small set of scoped instruction files in `.github/instructions/` provides **prescriptive, enforceable constraints**.
- `.github/AGENTS.md` is the short “front door” that links to the right places.
- Agent definitions in `.github/agents/` and role chatmodes in `.github/chatmodes/` describe **behavior/persona**, not system architecture.
This repo targets **GitHub Copilot** and **Claude Code** with a minimal,
two-tool documentation model:
- Shared standing guidance lives in root and nested `AGENTS.md` files.
- GitHub-required custom instructions stay in `.github/` only where GitHub
requires exact paths.
- Claude-only workflows live in `.claude/skills/`.
- Agent definitions in `.github/agents/` and role chatmodes in
`.github/chatmodes/` describe behavior/persona, not system architecture.

## Source of truth
- **Shared repo workflow**: `AGENTS.md` plus the nearest nested `AGENTS.md`
- **Component architecture & entry points**: `Src/<Component>/AGENTS.md`
- **Repo-wide workflow** (how to build/test, safety constraints): `.github/AGENTS.md`
- **Non-negotiable rules** (security, terminal restrictions, installer rules, etc.): `.github/instructions/*.instructions.md`
- **GitHub Copilot custom instructions**: `.github/copilot-instructions.md` and `.github/instructions/*.instructions.md`
- **Claude Code workflows**: `.claude/skills/*/SKILL.md`

## No duplication rule
- Do not copy component descriptions into `.github/instructions/`.
- Do not restate rules in multiple places. Prefer linking.
- If a rule must be enforced by agents for a subtree, add a scoped `.instructions.md`; otherwise document it in the relevant `AGENTS.md`.
- Do not duplicate shared standing guidance across `AGENTS.md`, `CLAUDE.md`,
and GitHub compatibility files.
- Keep each Claude skill in exactly one place: `.claude/skills/`.
- GitHub prompt files may reference Claude skill paths, but do not keep a
mirrored `.github/skills/` tree.
- If a rule must be auto-applied by GitHub Copilot, keep it in
`.github/instructions/*.instructions.md`; otherwise prefer the relevant
`AGENTS.md` or a Claude skill.

## What goes where

### `.github/AGENTS.md`
### `AGENTS.md`
Use for:
- One-page onboarding for agents: build/test commands, repo constraints, and links.
- Pointers to the curated instruction set and the component docs.
- One-page onboarding for both tools: build/test commands, repo constraints,
and links.
- Stable, always-on guidance that should apply across sessions.

### `.github/instructions/*.instructions.md`
Use for:
- Prescriptive constraints that must be applied during editing/review.
- Cross-cutting rules that prevent expensive mistakes (security, terminal command restrictions, installer rules, managed/native boundary rules).
- Cross-cutting rules that GitHub Copilot needs through its official,
path-scoped instruction mechanism.

**Curated keep set (intentionally small):**
- `build.instructions.md`
Expand All @@ -53,9 +64,14 @@ Baseline expectations for a component agent doc:
- **Dependencies** (other components/layers)
- **Tests** (test projects and the recommended `./test.ps1` invocation)

### `.claude/skills/`
Use for:
- Claude-only workflows, repeatable procedures, and task-specific guidance.
- Put multi-step procedures here instead of inflating `CLAUDE.md`.

### `.github/agents/` and `.github/chatmodes/`
Use for:
- Role definitions, boundaries, and tool preferences.
- GitHub Copilot role definitions, boundaries, and tool preferences.
- Do not put component architecture here; link to the component `AGENTS.md`.

## External standards alignment (post-2025)
Expand All @@ -68,5 +84,6 @@ Add a new `.github/instructions/<name>.instructions.md` only when:
- It applies broadly or to a subtree, and
- It would be harmful if Copilot ignored it.

Otherwise, update the appropriate `Src/**/AGENTS.md`.
Otherwise, update the appropriate `AGENTS.md` or add a Claude skill under
`.claude/skills/`.

5 changes: 5 additions & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# FieldWorks Copilot Code Review Instructions

Prefer the shared repo guidance in `AGENTS.md` and the nearest nested
`AGENTS.md` first. Keep GitHub-specific, path-scoped constraints in
`.github/instructions/*.instructions.md`. Claude-only task workflows live in
`.claude/skills/` and should not be mirrored under `.github/skills/`.

## Purpose

Review FieldWorks pull requests for the project-specific risks most likely to
Expand Down
2 changes: 1 addition & 1 deletion .github/prompts/pr-preflight.prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ agent: "agent"
argument-hint: "Optional branch purpose or PR goal"
---

Use the `pr-preflight` skill from `.github/skills/pr-preflight/SKILL.md` for the current branch.
Use the `pr-preflight` skill from `.claude/skills/pr-preflight/SKILL.md` for the current branch.

Treat any text supplied with this prompt as the optional branch purpose or PR goal. If no purpose is available, ask for it during the skill setup. Load `CONTEXT.md`, `.github/context/codebase.context.md`, and `.github/instructions/review-analyzer.instructions.md`, then follow the skill workflow through `.review/summary.md` creation and, when posting or updating a PR, a Quick Summary-first PR description.
2 changes: 1 addition & 1 deletion .github/prompts/respond-to-review-comments.prompt.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ agent: "agent"
argument-hint: "Optional PR URL, reviewer name, comment ID, or focus area"
---

Use the `respond-to-review-comments` skill from `.github/skills/respond-to-review-comments/SKILL.md`.
Use the `respond-to-review-comments` skill from `.claude/skills/respond-to-review-comments/SKILL.md`.

Treat any text supplied with this prompt as optional input: a PR URL, PR number, reviewer name, comment ID, pasted review comments, or a focus area.

Expand Down
78 changes: 0 additions & 78 deletions .github/skills/atlassian-readonly-skills/.env.example

This file was deleted.

78 changes: 0 additions & 78 deletions .github/skills/atlassian-skills/.env.example

This file was deleted.

Loading
Loading