robertbarclayy/conducty/conducty-context
Claude Code and agent skill by robertbarclayy/conducty
- community
Checking that the SKILL.md file is still in the repository.
Ingest a project directory into the Obsidian vault as a linked context sub-graph — Architecture, Conventions, Invariants, Hotspots, Tests, Glossary, plus per-bounded-context module notes. Tracks refresh deltas over time, flags stale context, and feeds prompt generation via backlinks. Use when the user says "load context", "refresh context", "ingest project", "update context for X", or provides a directory path to analyze.
Install
npx vskill@latest install robertbarclayy/conducty/conducty-contextSKILL.md
Conducty Context — Project Ingestion as a Sub-Graph
A single big Context My App.md is a brittle context engine. Re-reading 250 lines on every plan misses what changed and what's stale. Instead, conducty-context decomposes a project into a linked sub-graph in the Obsidian vault. Each note has one purpose, a stable filename, and explicit cross-links. Plans pull only the slices they need; refreshes record deltas instead of overwriting.
[!important] Read [[conducty-obsidian]] firstAll output goes to the vault. Per-instance notes follow Title Case; this skill writes a hub note plus several sub-notes per project.
When to Use
- First time loading a project:
conducty-context /path/to/project - The user says "refresh context" or "the project has changed since last load"
- Plan execution surfaces stale architecture info — a refresh fires
- A new bounded context emerges that wasn't captured before
The Project Sub-Graph
For each project, the vault holds one hub note plus a set of slice notes. All slice names are deterministic so wikilinks resolve from any plan or design.
| Slice | Filename | Holds | |
|---|---|---|---|
| Hub | Context {Project}.md | One-paragraph project identity, links to every slice, last-refreshed timestamp | |
| Architecture | Context {Project} Architecture.md | Bounded contexts, modules, dependency map (Mermaid), seams | |
| Conventions | Context {Project} Conventions.md | Coding style, naming, file organization, lint/format commands | |
| Invariants | Context {Project} Invariants.md | Public API surfaces, schemas, contracts, anything that MUST NOT change without intent | |
| Hotspots | Context {Project} Hotspots.md | Frequently changed files, recent activity, churn risks | |
| Tests | Context {Project} Tests.md | Test command, typecheck command, vuln-check command, coverage data, characterization data | |
| Glossary | Context {Project} Glossary.md | Domain terms, ubiquitous language, acronyms |
Bounded-context deep notes (optional, written when a module is large enough to warrant one):
Context {Project} {Module}.md— purpose, public interface, internal invariants, key files
Refresh deltas (one per refresh):
Context Refresh {Project} YYYY-MM-DD HHmm.md— what changed since last load: new files, removed files, new bounded contexts, broken invariants, new convention violations. Older refresh notes accumulate as a temporal record.
Workflow
Step 1: Identify the Target
Resolve the directory path to absolute. Extract project name from the basename, convert to Title Case for vault filenames (my-app → My App).
Check the vault for an existing hub note:
If this is a first load, create the project sub-graph directories before writing any slice:
Step 2: First Load vs. Refresh
First load: generate every slice + the hub. Move on.
Refresh: read the existing hub's last_refreshed frontmatter. Compute deltas (Step 7) and either edit each slice in place (preserving frontmatter, prepending changes) or write a refresh-delta note describing the diff and updating the hub's last_refreshed.
Step 3: Read Project Identity
Read these files if present (skip if absent):
README.mdorREADMEpackage.json,Cargo.toml,pyproject.toml,go.mod,Gemfile,pom.xmldocker-compose.yml,DockerfileAGENTS.md,CLAUDE.md— agent instructions.editorconfig,tsconfig.json,.eslintrc*,prettier*,ruff.toml,.golangci.yml— style/lint.claude/if present — local skills/commands
Capture: language, framework, key dependencies, build/test/lint commands, declared style rules, any agent instructions.
Step 4: Map Architecture and Bounded Contexts
Use Glob (src/**, lib/**, pkg/**, app/**) two levels deep to enumerate modules. For each module:
- What is its responsibility?
- What does it import from other modules?
- What imports it?
- What's its public surface (exports)?
Render a Mermaid dependency diagram in the Architecture slice — Obsidian renders Mermaid natively:
For modules with non-trivial internal complexity (>500 lines, multiple sub-responsibilities, or a public API surface other code depends on), generate a bounded-context deep note at Context/{Project}/Modules/Context {Project} {Module}.md and link it from Architecture.
Step 5: Capture Conventions
From style configs and observed code:
- Naming: file, type, function, variable
- File organization: where do new features go? where do tests live?
- Patterns: error handling, logging, configuration, dependency injection
- Forbidden: things the project explicitly rejects (commented in CLAUDE.md, lint rules, README)
- Lint/format commands
Step 6: Capture Invariants
Things that MUST NOT change silently:
- Public API surfaces (HTTP routes, exported functions, RPC schemas)
- Database schemas / migrations
- Configuration contracts (env vars, config files)
- File formats / wire formats
- Performance budgets if declared
For each invariant, note where it lives and what would break if it changed.
Step 7: Capture Hotspots and Recent Activity
Bash:
The most-touched files are the hot spots. Plans that touch hot spots inherit higher complexity ratings.
Grep for TODO|FIXME|XXX|HACK in recent commits' files.
Step 8: Capture Test + Tooling Commands
This slice is consumed directly by [[conducty-ship]] — the entries here populate the ship battery.
If a command can't be run safely (long-running, external deps required), record it but don't execute. If you can run it, do — record last_test_count, last_pass_count, last_run timestamp.
Step 9: Build the Glossary
Pull domain terms from:
- README headings + first occurrence prose
- Public type names, route names, table names
- Comments that define terms
For each: term + 1-sentence definition + a backlink to the most relevant code path. The glossary makes plans precise — when a prompt says "publish a SessionTrace", everyone reading the plan knows what that means without re-deriving it.
Step 10: Write the Sub-Graph
Write each slice with frontmatter and a ## Related section that links the hub and peers. All paths below are relative to $VAULT. The hub and the six standard slices live directly under Context/{Project}/. Module deep notes live under Context/{Project}/Modules/. Refresh deltas live under Context/{Project}/Refreshes/.
| Note | Full path | |
|---|---|---|
| Hub | Context/{Project}/Context {Project}.md | |
| Architecture | Context/{Project}/Context {Project} Architecture.md | |
| Conventions | Context/{Project}/Context {Project} Conventions.md | |
| Invariants | Context/{Project}/Context {Project} Invariants.md | |
| Hotspots | Context/{Project}/Context {Project} Hotspots.md | |
| Tests | Context/{Project}/Context {Project} Tests.md | |
| Glossary | Context/{Project}/Context {Project} Glossary.md | |
| Module deep note | Context/{Project}/Modules/Context {Project} {Module}.md | |
| Refresh delta | Context/{Project}/Refreshes/Context Refresh {Project} YYYY-MM-DD HHmm.md |
Wikilinks remain unchanged across the move — Obsidian resolves them by basename. Use [[Context {Project} Architecture]] etc, never path-prefixed wikilinks.
Hub note
Slice notes
Each slice carries type: context-{slice} (e.g. context-architecture), the project frontmatter, and ## Related linking the hub and any peer slice that's relevant (e.g. Architecture links Tests because deep modules need their own test commands).
Bounded-context deep note (optional)
Step 11: Refresh Delta (Refresh-Only)
When refreshing an existing project, write Context/{Project}/Refreshes/Context Refresh {Project} YYYY-MM-DD HHmm.md:
Apply changes to slice notes (Edit, not full overwrite). Update the hub's last_refreshed frontmatter. Prepend the new refresh-delta note to the hub's ## Refresh history list.
Step 12: Stale Detection
After writing, check all other project hub notes in the vault (Glob Context/*/Context *.md, then filter to depth-2 to skip slices). For any hub with last_refreshed older than {stale threshold — default 14 days, configurable per project via frontmatter stale_after_days}, flag it in your report:
"Stale context:[[Context Other Project]]last refreshed 2026-04-10 (17 days ago). Consider refresh before next plan touching it."
This catches drift before it bites a plan.
Step 13: Confirm
Tell the user:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/conducty-context/SKILL.md
Popularity
- Repository stars
- 216
- Repository forks
- 17
- 7-day trend score
- 27
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 17 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/robertbarclayy/conducty/conducty-context)