From 89c8a35245dfbdd399fc8fed9a8f80d90bd4e5e3 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 8 Aug 2026 16:25:51 +0000 Subject: [PATCH] chore(claude): add session config for Agent-Jack GitHub auth Adds .claude/settings.json + plugins.settings.yaml so Claude Code web sessions in this repo auto-authenticate: the 1pass plugin resolves the Agent-Jack vault into GITHUB_APP_* env vars via the OP service account, and the github-app plugin exchanges them for an installation token and configures git. Prevents the 'GitHub App not configured' / broken-push failure mode when a session's ephemeral git proxy resets. Mirrors nsheaps/.github's config. --- .claude/.gitignore | 8 +++++++ .claude/plugins.settings.yaml | 43 +++++++++++++++++++++++++++++++++++ .claude/settings.json | 37 ++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 .claude/.gitignore create mode 100644 .claude/plugins.settings.yaml create mode 100644 .claude/settings.json diff --git a/.claude/.gitignore b/.claude/.gitignore new file mode 100644 index 0000000..5e1d1f2 --- /dev/null +++ b/.claude/.gitignore @@ -0,0 +1,8 @@ + +# BEGIN: Managed by todo-sync plugin (plugins/todo-sync/scripts/init-gitignore.sh) +todos/ +plans/ +!**/.gitkeep +!**/AGENTS.md +!**/CLAUDE.md +# END: Managed by todo-sync plugin diff --git a/.claude/plugins.settings.yaml b/.claude/plugins.settings.yaml new file mode 100644 index 0000000..804e5e7 --- /dev/null +++ b/.claude/plugins.settings.yaml @@ -0,0 +1,43 @@ +# This file pairs with .claude/settings.json (which enables the plugins) and +# tells each plugin how to behave for this repo. It is read by the ai-mktpl +# plugins' SessionStart hooks; see the per-plugin SKILL.md. Modelled on +# nsheaps/.github's config. +# +# This wires up GitHub auth for Claude Code web sessions: the 1pass plugin +# resolves the Agent-Jack vault items into env vars (GITHUB_APP_ID / +# GITHUB_INSTALLATION_ID / GITHUB_APP_PRIVATE_KEY) via the OP service-account +# token provisioned for the session, and the github-app plugin exchanges those +# for an installation token and configures git — so pushes work without relying +# on an ephemeral session proxy. Flip the vault name in `1pass.opExec.items` +# and `github-app.ref` to operate as a different agent. + +1pass: + opExec: + items: + - 'op://Agent-Jack/ENVIRONMENT' + - 'op://Agent-Jack/github--app--jack' + targets: + # envLocal: writes $AGENT_HOME_DIR/.env.local (sourced via .envrc in agent + # launches). sessionStartBashEnv: appends `export` lines into + # $CLAUDE_ENV_FILE so the github-app plugin's SessionStart hook sees the + # GITHUB_APP_* vars without needing a prior shell session. + - envLocal + - sessionStartBashEnv + recursiveResolve: true + +github-app: + ref: 'op://Agent-Jack/github--app--jack' + autoGitConfig: true + +github: + autoInstall: false + +mise: + autoInstallTools: true + autoTrust: true + +# Operated directly via Claude Code on web, not by an autonomous agent — disable +# task-utils' in-progress-task gate so writes aren't blocked. +task-utils: + enabled: false + requireInProgress: false diff --git a/.claude/settings.json b/.claude/settings.json new file mode 100644 index 0000000..35294f9 --- /dev/null +++ b/.claude/settings.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://json.schemastore.org/claude-code-settings.json", + "permissions": { + "allow": [ + "Skill", + "Glob", + "Grep", + "Bash(git log:*)", + "Bash(git diff:*)", + "Bash(git status:*)", + "Bash(gh pr:*)", + "Bash(mise:*)" + ] + }, + "enabledPlugins": { + "agent-utils@agents": true, + "agent-tab-titles@nsheaps-claude-plugins": true, + "shared-lib@ai-mktpl": true, + "1pass@ai-mktpl": true, + "github-app@ai-mktpl": true, + "mise@ai-mktpl": true + }, + "extraKnownMarketplaces": { + "agents": { + "source": { + "source": "github", + "repo": "nsheaps/agents" + } + }, + "ai-mktpl": { + "source": { + "source": "github", + "repo": "nsheaps/ai-mktpl" + } + } + } +}