plugins/orient/skills/orient/SKILL.md
Use when user invokes /orient with a topic keyword, entity type, project name, time qualifier, or combination. Also triggers on "what do we know about X", "remind me about X", "where did we leave off on X". Provides targeted context loading — searches the MCP Memory Server graph, knowledge files, journal entries, and research index to produce a focused orientation briefing.
npx skillsauth add harnessprotocol/harness-kit orientInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produce a focused orientation briefing for a specific topic by searching across the knowledge graph, knowledge files, journal entries, and research index. Designed for targeted context loading — get only what's relevant instead of everything.
Core principles:
User types /orient followed by:
membrain, data engineering)desires, open tensions)recent, last week, today)recent membrain, desires and tensions)/orient membrain
/orient desires and tensions
/orient recent evidence
/orient the streaming migration project
/orient data engineering
Follow in order. Skip a step only when its required component is absent (e.g., MCP not connected → skip Graph).
Classify the argument into one or more of:
| Type | Detection | Example |
|------|-----------|---------|
| Entity type | Matches known graph type (case-insensitive): Desire, Tension, Evidence, Project, Research, Concept, Value, Idea, Procedure, Question, Goal | desires, open tensions |
| Time qualifier | Contains: "recent", "latest", "last week", "today", date patterns (YYYY-MM-DD) | recent evidence |
| Topic keyword | Everything else — natural language | membrain, data engineering |
Time qualifier definitions (applies to journal only — graph searches are always full-graph unless the query is explicitly temporal):
Parsing rules:
Entity type vs keyword disambiguation: When a word matches both a known entity type and a plausible keyword (e.g., "project", "research", "idea"), ask the user for clarity before searching: "Does 'project' mean the entity type (graph nodes of type Project) or the topic keyword (anything related to projects)?" Skip this check when context makes the intent obvious (e.g., "open tensions" → entity type).
Entity type reference: Check knowledge/reference.md for the current schema if unsure which entity types exist.
Requires: MCP Memory Server (search_nodes, open_nodes tools available)
If MCP Memory Server is not connected, skip this step entirely and note it in the output: "Graph: MCP Memory Server not connected — skipped."
Smart query construction:
search_nodes query first (e.g., search_nodes("streaming migration"))Search strategy:
search_nodes("topic") with the parsed topic keyword (using smart query construction above)search_nodes("EntityType") for each typeHard caps:
| Guard | Limit |
|-------|-------|
| read_graph | NEVER called — this dumps the entire graph |
| search_nodes calls | Max 3 per orientation |
| open_nodes calls | Max 2 per orientation |
| Entities shown | Max 10 |
| Observations per entity | Max 3 |
Breadth guard: If search returns >15 results, show the top 10 most relevant and note: (Showing top 10 of N results — narrow your query for more specific results.)
Selection: From results, select the top 10 most relevant entities. Show max 3 observations per entity.
knowledge/ directory to discover what files existknowledge/journal/ and read matching date entries (most recent first, per time qualifier definitions in Step 1)projects.md, evidence.md, development_log.mdcore_principles.md, identity.md, procedures.mdIf no knowledge/ directory exists, skip this step and note it.
research/INDEX.md exists, grep it for the topic keyword(s)research/[topic]/ directory exists — if so, list its filesIf no research/ directory or INDEX.md exists, skip this step.
Use this output structure. Omit empty sections — do not include a section header with no content.
## Orient: [Topic]
### Graph
- **EntityName** (Type) — observation 1; observation 2; observation 3
- **EntityName** (Type) — observation 1
### Knowledge
> From projects.md: [relevant excerpt — the enclosing section, condensed]
> From evidence.md: [relevant excerpt]
### Journal
- **2026-03-07:** [relevant excerpt from that day's entry]
- **2026-03-06:** [relevant excerpt]
### Research
- `research/membrain/architecture.md` — membrain architecture reference
- `research/agent-memory/hindsight.md` — biomimetic agent memory
### Suggested Queries
- `/orient membrain governance` — governance layer details
- `/orient membrain phase 5` — phase 5 planning context
- `open_nodes(["Desire-Build-Something-Shippable"])` — full desire context (entity details)
Rough token budget per section (guidance, not hard caps):
Adaptive rules:
/orient [topic] for follow-on topic searches. Use open_nodes only when suggesting specific entities the user might want full details on. Never suggest read_graph.End with a contextual follow-up offer:
| Guard | Limit |
|-------|-------|
| read_graph | NEVER called |
| search_nodes calls | Max 3 |
| open_nodes calls | Max 2 |
| Graph entities shown | Max 10 |
| Observations per entity | Max 3 |
| Knowledge files read | Aim 3-5 |
| Journal entries read | Max 3 |
| Research entries listed | Max 5 (listed, not read) |
| Total output | ~800-2000 tokens |
| Broad result threshold | >15 results → show top 10 with note |
| Mistake | Fix |
|---------|-----|
| Calling read_graph | NEVER. Use search_nodes with targeted queries only. |
| Reading entire knowledge files | Extract only the enclosing H2/H3 section around the match. |
| Reading research synthesis files | List them. Offer to read specific ones. Don't read proactively. |
| Exceeding search caps | Stop at 3 search_nodes calls, 2 open_nodes calls. If you need more, offer follow-up queries. |
| Dumping >15 graph results | Show top 10 most relevant, note the total count. |
| Including empty sections | Omit sections that have no content. Don't show "### Research" with nothing under it. |
| Ignoring MCP availability | Check if search_nodes/open_nodes tools exist before calling them. If not, skip Graph and note it. |
| Wall of text | Keep output between ~800-2000 tokens. This is a briefing, not a report. Condense excerpts. |
| Suggesting read_graph in follow-ups | Only suggest /orient calls or open_nodes as follow-up queries. |
| Using grep bash command | Use the Grep tool instead for all file content searches. |
| Applying time qualifiers to graph | Time qualifiers scope journal entries only. Graph searches are always full-graph. |
tools
Harness Kit documentation — installation, plugin catalog, creating plugins, cross-harness setup, architecture, and FAQ. Use when working with or configuring harness-kit plugins, understanding the plugin/skill system, installing slash commands, setting up AI coding tool configuration, answering questions about the plugin marketplace, writing SKILL.md files, using harness.yaml, or integrating with Copilot, Cursor, or Codex. Do NOT use for general Claude Code questions unrelated to harness-kit.
development
Use when user invokes /stats or asks about Claude Code usage, token consumption, session history, model distribution, or activity patterns. Generates an interactive HTML dashboard with charts and tables, auto-opens in browser. Also triggers on "how much have I used Claude", "show my usage", "token usage", "session stats", "usage report", "usage dashboard". Do NOT use for API billing or cost estimation — token counts are not costs.
development
Use when user invokes /review to review code changes. Also triggers on "review my code", "check this PR", "look at my changes". Accepts a PR number (e.g. /review 123), a path filter (e.g. /review src/auth/), or no argument (reviews current branch vs base). Produces structured per-file review with severity labels, cross-file analysis, and an overall verdict. Do NOT use for explaining what code does — use /explain instead.
testing
Use when user invokes /research command with any source — URL, GitHub repo, YouTube video, podcast, Reddit post, academic paper, documentation page, product site, local file, or empty. Processes and indexes research materials with raw source preservation and topic-level synthesis coalescing. Do NOT use for quick factual questions — use /explain instead.