
Company News
Jerod Santo Joins Socket as Head of Media
Allow myself to introduce... myself.
@handsupmin/gc-tree
Advanced tools
Global Context Tree, a lightweight branch-aware global context orchestrator for AI coding tools
__
/\ \__
__ ___\ \ ,_\ _ __ __ __
/'_ `\ /'___\ \ \/ /\`'__\/'__`\ /'__`\
/\ \L\ \/\ \__/\ \ \_\ \ \//\ __//\ __/
\ \____ \ \____\\ \__\\ \_\\ \____\ \____\
\/___L\ \/____/ \/__/ \/_/ \/____/\/____/
/\____/
\_/__/
Attach durable, reusable context to your existing AI tools. Manage multiple contexts like Git branches.
You use Claude Code or Codex every day. But your real work spans multiple repos, products, and clients — and your AI tools only know about the current file.
So you end up doing this every session:
That's not an AI problem. It's a context management problem.
You'll get the most out of gc-tree if you:
If you only ever work in one repo and one product, you probably don't need this. CLAUDE.md or .cursorrules is enough.
npm install -g @handsupmin/gc-tree
gctree init
gctree init walks you through:
claude-code, codex, or bothmain gc-branchAfter that, your AI tool gets real SessionStart/UserPromptSubmit hook integration, so it auto-checks gc-tree before work and caches empty/no-match results for the session. Hook output stays compact: it reports found/no-match state plus matching document titles and IDs, and full docs stay behind gctree resolve --id <id>.
gctreegc-tree sits above the repo level. It stores durable context in structured markdown files and lets your AI tools pull only what's relevant — before each session, automatically.
gctree resolve is the compact index layer in a progressive-disclosure workflow:
gctree resolve --query "..." → compact matches with stable IDsgctree related --id <match-id> → supporting docs around one matchgctree show-doc --id <match-id> → full markdown for that docWhen no docs exist, a repo is excluded, or a query has no hits, gc-tree returns an explicit status instead of failing ambiguously.
gctree resolve --query "auth token rotation policy"
{
"gc_branch": "main",
"matches": [
{
"title": "Auth & Session Conventions",
"score": 4,
"summary": "JWT rotation on every request, refresh tokens stored in httpOnly cookies, 15-min access token TTL",
"excerpt": "## Auth Flow\nAccess token: 15-min TTL, rotated on every authenticated request..."
}
]
}
Your AI tool gets the right context. Not the whole knowledge base — just the relevant slice.
In practice: only ~4% of your total context is injected per query. The other 96% stays on disk, out of the token window, until it's actually needed.
CLAUDE.md is great — for one repo.
The moment you have multiple repos, clients, or workstreams:
CLAUDE.md / cursor rules | gc-tree | |
|---|---|---|
| Scope | One repo | Multiple repos, one context |
| Persistence | Per-repo file | Stored outside repos, reused across sessions |
| Switching contexts | Manual file edits | gctree checkout client-b |
| Relevance filtering | Everything or nothing | Only injects matching docs (~4% of total) |
| Onboarding | Hand-written | Guided by your AI tool |
| Works with Codex | ✅ | ✅ |
| Works with Claude Code | ✅ | ✅ |
Tested against real internal documentation (4 Notion exports, Korean + English mixed queries):
| Metric | Result |
|---|---|
| Recall — relevant queries find the right doc | 100% (16/16) |
| Precision — irrelevant queries return empty | 80% (4/5) |
| F1 score | 88.9% |
| Tokens injected per query vs. total context | ~4% |
| Works with mixed Korean + English queries | ✅ |
gctree init # sets up ~/.gctree and global activation for your chosen provider(s)
gctree scaffold --host claude-code # installs CLAUDE.md snippet + /gc-onboard, /gc-update-global-context
gctree scaffold --host codex # installs AGENTS.md snippet + $gc-onboard, $gc-update-global-context
gctree scaffold --host both # both at once
Both providers use the same underlying context store. Onboard once, use from either tool.
Claude Code — uses /gc-resolve-context, /gc-onboard, /gc-update-global-context slash commands.
Codex — uses $gc-resolve-context, $gc-onboard, $gc-update-global-context skills. Verified with codex exec:
gctree status → gc_branch: main, doc_count: 2
gctree resolve --query 'NestJS DTO plainToInstance'
→ matched "Backend Coding Conventions" (score: 3)
→ DTO: class-transformer plainToInstance, class-validator required
→ Error handling: HttpException-based custom exceptions, no raw Error throws
gctree checkout -b client-b
gctree onboard
Each gc-branch is a fully independent context lane. Switch between them like Git branches.
gctree resolve --query "billing retry policy"
Returns only the matching docs — title, summary, and excerpt. Your tool reads the full doc only if the summary isn't enough.
gctree update-global-context # or: gctree update-gc / gctree ugc
Guided update flow — your AI tool asks what changed and writes the new context back to the gc-branch.
gctree set-repo-scope --branch client-b --include # include current repo
gctree set-repo-scope --branch client-b --exclude # exclude current repo
gc-tree won't inject a context into repos where it doesn't belong.
~/.gctree/
branches/
main/
index.md ← compact index, loaded first
docs/
auth.md ← full doc, read only when needed
architecture.md
client-b/
index.md
docs/
...
branch-repo-map.json ← which repos belong to which gc-branch
settings.json ← preferred provider, language
Context lives outside your repos — no .gitignore rules needed, no accidental commits, reusable across every project that uses the same gc-branch.
| Goal | Command |
|---|---|
| Initialize gc-tree and choose a provider | gctree init |
| Confirm the active gc-branch | gctree status |
| Search the active context | gctree resolve --query "..." |
| Create or switch gc-branches | gctree checkout <branch> / gctree checkout -b <branch> |
| List all gc-branches | gctree branches |
| Guided onboarding for an empty gc-branch | gctree onboard |
| Guided durable update for the active gc-branch | gctree update-global-context / gctree ugc |
| Show repo-scope rules | gctree repo-map |
| Include/exclude current repo for a gc-branch | gctree set-repo-scope --branch <name> --include / --exclude |
| Reset a gc-branch before re-onboarding | gctree reset-gc-branch --branch <name> --yes |
| Add a local override in one repo | gctree scaffold --host codex --target /path/to/repo |
| Remove global gc-tree activation and context | gctree uninstall --yes |
docs/concept.mddocs/principles.mddocs/usage.mddocs/local-development.mdContributions are welcome. See CONTRIBUTING.md for the development workflow and pull request checklist.
MIT. See LICENSE.
FAQs
Global Context Tree, a lightweight branch-aware global context orchestrator for AI coding tools
The npm package @handsupmin/gc-tree receives a total of 78 weekly downloads. As such, @handsupmin/gc-tree popularity was classified as not popular.
We found that @handsupmin/gc-tree demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Allow myself to introduce... myself.

Research
/Security News
A Twitch browser extension on Chrome and Firefox forwards users’ live OAuth session tokens through proxies controlled by a Russian bot service.

Security News
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.