From fd196181275105742f6c3411a4d0467e975fc3a2 Mon Sep 17 00:00:00 2001 From: 23241a6749 Date: Fri, 10 Jul 2026 08:45:16 +0000 Subject: [PATCH 1/2] feat(env): register GITHUB_TOKEN for .env and keychain end-to-end support GITHUB_TOKEN was missing from env.py's CONFIGURATION_KEYS and KEYCHAIN_KEYS, so .env and keychain-stored tokens were silently ignored. Pipeline.py already passes config.get(GITHUB_TOKEN) to github._resolve_token, so registration alone completes the end-to-end. Closes #792 References #724 (closed), #782 (merged) --- skills/last30days/scripts/lib/env.py | 3 ++- skills/last30days/scripts/setup-keychain.sh | 1 + skills/last30days/scripts/setup-pass.sh | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/skills/last30days/scripts/lib/env.py b/skills/last30days/scripts/lib/env.py index 09b23a121..f4bb5f531 100644 --- a/skills/last30days/scripts/lib/env.py +++ b/skills/last30days/scripts/lib/env.py @@ -60,7 +60,7 @@ def read_secret_env(name: str, default: str | None = None) -> str | None: "AUTH_TOKEN", "CT0", "BSKY_HANDLE", "BSKY_APP_PASSWORD", "TRUTHSOCIAL_TOKEN", "BRAVE_API_KEY", "EXA_API_KEY", "SERPER_API_KEY", "OPENROUTER_API_KEY", "PERPLEXITY_API_KEY", "PARALLEL_API_KEY", "XQUIK_API_KEY", - "XIAOHONGSHU_API_BASE", + "XIAOHONGSHU_API_BASE", "GITHUB_TOKEN", ) # pass(1) integration: Linux/Unix analog of the Keychain source. Each key in @@ -522,6 +522,7 @@ def get_config(policy: ConfigLoadPolicy | None = None) -> dict[str, Any]: # resolved above via openai_auth). ('GROQ_API_KEY', None), ('LAST30DAYS_YT_SUB_LANGS', 'en,es,pt'), + ('GITHUB_TOKEN', None), ] for key, default in keys: diff --git a/skills/last30days/scripts/setup-keychain.sh b/skills/last30days/scripts/setup-keychain.sh index 09e6ae2ea..e8f1e2fa7 100755 --- a/skills/last30days/scripts/setup-keychain.sh +++ b/skills/last30days/scripts/setup-keychain.sh @@ -40,6 +40,7 @@ ALL_KEYS=( PARALLEL_API_KEY XQUIK_API_KEY XIAOHONGSHU_API_BASE + GITHUB_TOKEN ) if [[ "${OSTYPE:-}" != darwin* ]]; then diff --git a/skills/last30days/scripts/setup-pass.sh b/skills/last30days/scripts/setup-pass.sh index 1f736a463..fa5491465 100755 --- a/skills/last30days/scripts/setup-pass.sh +++ b/skills/last30days/scripts/setup-pass.sh @@ -42,6 +42,7 @@ ALL_KEYS=( PARALLEL_API_KEY XQUIK_API_KEY XIAOHONGSHU_API_BASE + GITHUB_TOKEN ) REPLACE=0 From 79c737d053615f374088e7a77fc09a25b29aa7bb Mon Sep 17 00:00:00 2001 From: 23241a6749 Date: Fri, 10 Jul 2026 08:54:09 +0000 Subject: [PATCH 2/2] fix(doc): make _github_record read config so .env-sourced GITHUB_TOKEN shows in doctor _github_record now checks config.get("GITHUB_TOKEN") first (covering .env and keychain sources), falling back to os.environ (for process-env-only cases), before trying gh CLI. This mirrors _resolve_token's same two-source pattern and ensures doctor's auth display matches real token availability. --- skills/last30days/scripts/lib/doctor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skills/last30days/scripts/lib/doctor.py b/skills/last30days/scripts/lib/doctor.py index 51582c969..3e0d01087 100644 --- a/skills/last30days/scripts/lib/doctor.py +++ b/skills/last30days/scripts/lib/doctor.py @@ -303,7 +303,7 @@ def _polymarket_record(config): def _github_record(config): - authed = bool(env.read_secret_env("GITHUB_TOKEN") or shutil.which("gh")) + authed = bool(config.get("GITHUB_TOKEN") or env.read_secret_env("GITHUB_TOKEN") or shutil.which("gh")) detail = ( "authenticated tier (GITHUB_TOKEN or gh CLI)" if authed