diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..7d22894 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,23 @@ +{ + "extraKnownMarketplaces": { + "compound-engineering-plugin": { + "source": { + "source": "github", + "repo": "EveryInc/compound-engineering-plugin" + } + }, + "integral-productivity-internal": { + "source": { + "source": "github", + "repo": "Integral-Productivity/marketplace-internal" + } + } + }, + "enabledPlugins": { + "compound-engineering@compound-engineering-plugin": true, + "integral-productivity-engineering@integral-productivity-internal": true, + "software-architecture@integral-productivity-internal": true, + "product-architecture@integral-productivity-internal": true, + "lean-management@integral-productivity-internal": true + } +} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..b4d0de8 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,2 @@ +# Default code-owner. Tier 3 standard from devops-excellence (ADR-001). +* @kraigparkinson diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..2f0a901 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,20 @@ +Closes # + +## Summary + +- +- + +## Test plan + +- [ ] +- [ ] + + diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..9af9e65 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,17 @@ +version: 2 + +updates: + - package-ecosystem: github-actions + directory: "/" + schedule: + interval: weekly + day: monday + time: "08:00" + timezone: America/Los_Angeles + open-pull-requests-limit: 10 + labels: + - dependencies + - github-actions + commit-message: + prefix: chore(deps) + include: scope diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml new file mode 100644 index 0000000..5d53fca --- /dev/null +++ b/.github/workflows/auto-merge.yml @@ -0,0 +1,19 @@ +# Standard auto-merge caller. Identical to the Tier 1/2 templates; kept here so +# the Tier 3 spec can be copied as a complete unit without cross-tier reads. + +name: Auto-Merge + +on: + pull_request: + types: [opened, synchronize, reopened] + +permissions: + contents: write + pull-requests: write + +jobs: + auto-merge: + name: Auto-Merge + uses: Integral-Productivity/reusable-workflows/.github/workflows/reusable-auto-merge.yml@main + secrets: + OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }} diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml new file mode 100644 index 0000000..36be003 --- /dev/null +++ b/.github/workflows/claude.yml @@ -0,0 +1,36 @@ +# Standard @claude on-demand bot caller. See tier1/.github/workflows/claude.yml +# for the rationale on the `if:` gate — it is required, do not remove it. + +name: Claude Code + +# REQUIRED — mirrors reusable-claude.yml's permissions. A workflow_call reusable +# can only USE permissions the caller GRANTS; without this block the validator +# rejects the call at startup (0-second startup_failure on every trigger). See +# tier1/.github/workflows/claude.yml for the full rationale. +permissions: + contents: write + pull-requests: write + issues: write + id-token: write + actions: read + +on: + issue_comment: + types: [created] + pull_request_review_comment: + types: [created] + issues: + types: [opened, assigned] + pull_request_review: + types: [submitted] + +jobs: + claude: + if: | + (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || + (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || + (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || + (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))) + uses: Integral-Productivity/reusable-workflows/.github/workflows/reusable-claude.yml@main + secrets: + CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}