Skip to content

Commit e470d96

Browse files
yoomlamclaude
andauthored
feat(agents): knowledge router + org-guidance & practice-knowledge skills (#38)
## What Extends the knowledge system beyond Project Index (the only covered class, ~30% of the Slack KG questions) to the top two uncovered classes from the [Slack KG Question Analysis](https://docs.google.com/document/d/1UDuazl1APUQedT2AcIUtGX47qIA3dd8gk5pxiRR8u9I/edit): **Sage/org guidance** (149 q) and **Practice knowledge** (93 q). The single `LIK Query: Project Index` agent is replaced by a **Knowledge Search Agent** — a router that classifies a question and dispatches to the matching query skill. ## Skills - **`query-project-index`** (existing) — projects. - **`query-org-guidance`** (new) — org standards, process, templates, tool/license access. Confluence spaces `NH, BB, PD, ENG`; follows hub pages to Drive templates; answers "does Nava have license X" by evidence only (no central inventory exists). - **`query-practice-knowledge`** (new) — discipline craft how-to. Practice spaces `DOH, PL, ENG, PM1, NL, TSS` + community-of-practice Slack channels; labels *documented practice* vs *peer discussion*. Space assignments were derived by reading each Confluence space's home page. `ENG` intentionally serves both topics. The empty `IT` space was dropped. Both new skills reuse the project-index marker recipe, integrity guard, and confirmation-weighted ranking/feedback. Error handling across all skills + the router switched from **stop-on-failure** to **report-and-continue**. ## Rename: drop the `lik-` prefix The Claude workspace is single-tenant for this app, so no namespacing is needed. Renamed all skill directories/frontmatter and agent file stems, and updated every in-repo reference, deploy-workflow option, CLAUDE.md rule, and doc. Historical `docs/plans` / `docs/brainstorms` left untouched. ## Notes / follow-ups - The old **"LIK Query: Project Index"** platform agent is not pruned by deploy (glob + create/update, no delete) — left live intentionally. - `deploy-skills.yml` retained for standalone skill updates; `deploy_agents.py` still deploys each agent's referenced skills. - New skills use **live source search** (no Catalog rows yet) — a later pass could catalog org-guidance for confirmation-weighted ranking. ## Test `deploy` + `lik-ui` agent/skill/init suites pass (SDK faked, no network). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
1 parent f35b48d commit e470d96

17 files changed

Lines changed: 390 additions & 135 deletions

File tree

.github/workflows/deploy-agents.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ on:
2121
type: choice
2222
options:
2323
- all
24-
- lik-query-project-index
25-
- lik-cross-source-reference
26-
- lik-catalog-registration
24+
- knowledge-search
25+
- cross-source-reference
26+
- catalog-registration
2727
default: all
2828

2929
permissions:

.github/workflows/deploy-skills.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ on:
1919
type: choice
2020
options:
2121
- all
22-
- lik-query-project-index
23-
- lik-sync-catalog-from-project-indexes
22+
- query-project-index
23+
- query-org-guidance
24+
- query-practice-knowledge
25+
- sync-catalog-from-project-indexes
2426
default: all
2527

2628
permissions:

CLAUDE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88

99
* **Never commit or push to `main` without asking first.** All changes go through a branch and PR. Before every commit or push, check the current branch (`git branch --show-current`) — if it's `main`, stop and ask. This applies even for one-line follow-up fixes; a merged PR often leaves the checkout back on `main`.
1010
* **Re-check the current branch right before any git write (commit, push, branch, checkout), not once at the start.** The user switches branches while Claude is working, so the branch you saw earlier may be stale by the time you act. Never assume the checkout is still on the branch you created or expected — run `git branch --show-current` immediately before the write and confirm it's the intended one.
11-
* Prefix all skill names with `lik-` (e.g. `lik-query-project-index`). Applies to the skill directory under `claude_platform/skills/` and its `name:` frontmatter.
12-
* Managed Agents resources are GitHub-sourced under `claude_platform/`: `skills/` (skill dirs), `agents/` and `environments/` (the platform's raw export YAML). Agents reference skills, and lik-ui references agents/environments, **by name** — no platform ids in the repo. Deploy skills via `deploy-skills.yml` and agents+environments via `deploy-agents.yml` (both manual dispatch); see `scripts/README.md`.
11+
* Skill and agent names carry **no** `lik-` prefix (e.g. skill dir `query-project-index`, agent file `knowledge-search.yaml`). The Claude workspace is single-tenant for this app, so no namespacing is needed. Applies to skill directories + their `name:` frontmatter and agent file stems.
12+
* Managed Agents resources are GitHub-sourced under `claude_platform/`: `skills/` (skill dirs), `agents/` and `environments/` (the platform's raw export YAML). Agents reference skills, and lik-ui references agents/environments, **by name** — no platform ids in the repo. Deploy a skill on its own via `deploy-skills.yml`; deploy agents+environments (with each agent's referenced skills) via `deploy-agents.yml` (both manual dispatch); see `scripts/README.md`.
1313
* Wrap `SKILL.md` prose at a 120-character line limit. Exceptions that stay on one line: YAML frontmatter values (e.g. the `description`), table rows, and fenced code.
1414
* The software is being implemented based on the docs in the `v0.5` folder.
1515
- As code is being written ensure it aligns with the goals and intent of those docs.

claude_platform/agents/lik-catalog-registration.yaml renamed to claude_platform/agents/catalog-registration.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ model:
1414
description: >
1515
Registers entries into the Discovery Layer Catalog (the lik-mcp service) from their source of
1616
truth. Today it can catalog Project Indexes — crawling the project-index pages in Confluence and
17-
upserting one Catalog row per page — via the lik-sync-catalog-from-project-indexes skill. More
17+
upserting one Catalog row per page — via the sync-catalog-from-project-indexes skill. More
1818
cataloging skills, for other topics, will be added over time.
1919
system: >
2020
You are the Catalog Registration Agent for Nava. Your job is to register entries into the
2121
Discovery Layer Catalog (the lik-mcp service) from their authoritative source, using whichever
2222
cataloging skill matches what the user asked to catalog.
2323
2424
Available cataloging skills:
25-
- lik-sync-catalog-from-project-indexes — catalog Project Indexes. Use it whenever the user asks
25+
- sync-catalog-from-project-indexes — catalog Project Indexes. Use it whenever the user asks
2626
to catalog, sync, or (re)build the project indexes / the project-index catalog. It crawls the
2727
Confluence pages tagged `project-index` and upserts one Catalog row per page. It writes only to
2828
the Catalog, never back to Confluence.
@@ -66,5 +66,5 @@ tools:
6666
# Divergence from the raw export: skills are referenced by NAME (the skill's directory under
6767
# claude_platform/skills/), not skill_id. deploy_agents.py resolves name -> skill_id at deploy.
6868
skills:
69-
- name: lik-sync-catalog-from-project-indexes
69+
- name: sync-catalog-from-project-indexes
7070
metadata: {}
File renamed without changes.
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# Managed Agent spec — deployed to the Claude platform by scripts/deploy_agents.py.
2+
#
3+
# This is the platform's raw agent export/import YAML (the shape beta.agents.create/update
4+
# consumes), with ONE divergence: `skills` entries reference a skill by *name*, not skill_id.
5+
# The deploy resolves each name to its platform skill_id (created by deploy_skills.py) and pins
6+
# `version: "latest"` before the SDK call — so no skill_ids live in the repo. The `name:` field
7+
# below is the platform identity the deploy and lik-ui match on (create-if-absent, else update).
8+
name: "Knowledge Search Agent"
9+
model:
10+
effort:
11+
type: high
12+
id: claude-sonnet-5
13+
speed: standard
14+
description: >
15+
Answers a Nava delivery-knowledge question by routing it to the right specialized query skill —
16+
project history, organizational guidance (standards, process, templates, tool/license access), or
17+
practice craft how-to. Classifies the question first, then runs the matching skill and returns its
18+
cited, confirmation-weighted answer. Names what it can't yet cover and points elsewhere.
19+
system: >
20+
You are the Knowledge Search Agent for Nava. A person brings you a delivery-knowledge question;
21+
your job is to classify it and route it to the ONE query skill built for that kind of question,
22+
then let that skill do the work. You are a router, not an answerer — the skills own the retrieval,
23+
citation, ranking, and feedback; you pick the right one and hand off.
24+
25+
Available query skills, and the questions each owns:
26+
- query-project-index — Nava's PROJECTS: what a team has done, scope, impact, client, CPARS,
27+
workstreams, capabilities, tech stack, artifacts, research, case studies, BD assets. Use for
28+
"has anyone done X?", "which projects involve Y?", "what tech did project Z use?", "who worked
29+
on it?".
30+
- query-org-guidance — ORGANIZATIONAL guidance that applies across projects: standards,
31+
processes, approval paths, templates and kickoff artifacts, and tool/license/vendor access.
32+
Use for "what is Nava's policy on X?", "is there a process for Y?", "does Nava have a license
33+
for Z / how do I get access?", "where's the template for W?". Its sources today are Nava's
34+
Confluence guidance spaces (the Sage handbook and the org handbooks), but treat those as its
35+
sources, not the question's subject.
36+
- query-practice-knowledge — CRAFT how-to by discipline (design, engineering, research,
37+
accessibility, content, AI technique): "how do you approach X?", "what's the best practice for
38+
Y?", "what tool do people recommend for Z?". This is peer craft knowledge, distinct from a named
39+
project's work.
40+
41+
How to route:
42+
1. Classify the question into exactly one of the three domains above. If it clearly spans two
43+
(e.g. "what tech stack do teams use AND what's the recommended practice"), pick the primary
44+
domain, run that skill, then offer to run the second.
45+
2. If the domain is ambiguous, ask ONE short single-letter / numbered question to disambiguate
46+
rather than guessing.
47+
3. Run the matching skill and follow it EXACTLY — its staged escalation, its Response integrity
48+
guard and content-state marker recipe, its citation and confirmation-weighted ranking, and its
49+
feedback step. Return its answer as-is; do not add an uncited summary on top.
50+
51+
Questions you cannot yet cover — name the gap plainly, don't improvise:
52+
- Government/domain context ("how does the VA Contention Classifier work?"), finding a PERSON or
53+
certification, and reporting broken content have NO dedicated skill yet. Say so, and suggest the
54+
Cross-Source Referencing Agent as a general fallback.
55+
- HR / operations / benefits questions (timesheets, expense codes, PD budgets, perks) are out of
56+
scope for delivery knowledge; say so and point to People Ops rather than searching.
57+
58+
If a tool call fails or a required source is unavailable, do not stop — report the error, its
59+
likely cause, and the remedy, and continue with whatever the chosen skill can still do. Do not
60+
silently switch to a different skill to paper over a failure; surface the gap and provide options to the user.
61+
mcp_servers:
62+
- name: lik-mcp
63+
type: url
64+
url: https://mcp.lik.navapbc.com/mcp
65+
- name: atlassian
66+
type: url
67+
url: https://mcp.atlassian.com/v1/mcp
68+
- name: google-drive-drivemcp
69+
type: url
70+
url: https://drivemcp.googleapis.com/mcp/v1
71+
- name: slack
72+
type: url
73+
url: https://mcp.slack.com/mcp
74+
- name: github
75+
type: url
76+
url: https://api.githubcopilot.com/mcp
77+
tools:
78+
- configs: []
79+
default_config:
80+
enabled: true
81+
permission_policy:
82+
type: always_allow
83+
type: agent_toolset_20260401
84+
- configs: []
85+
default_config:
86+
enabled: true
87+
permission_policy:
88+
type: always_allow
89+
mcp_server_name: lik-mcp
90+
type: mcp_toolset
91+
- configs: []
92+
default_config:
93+
enabled: true
94+
permission_policy:
95+
type: always_allow
96+
mcp_server_name: atlassian
97+
type: mcp_toolset
98+
- configs: []
99+
default_config:
100+
enabled: true
101+
permission_policy:
102+
type: always_allow
103+
mcp_server_name: google-drive-drivemcp
104+
type: mcp_toolset
105+
- configs: []
106+
default_config:
107+
enabled: true
108+
permission_policy:
109+
type: always_allow
110+
mcp_server_name: slack
111+
type: mcp_toolset
112+
- configs: []
113+
default_config:
114+
enabled: true
115+
permission_policy:
116+
type: always_allow
117+
mcp_server_name: github
118+
type: mcp_toolset
119+
# Divergence from the raw export: skills are referenced by NAME (the skill's directory under
120+
# claude_platform/skills/), not skill_id. deploy_agents.py resolves name -> skill_id at deploy.
121+
skills:
122+
- name: query-project-index
123+
- name: query-org-guidance
124+
- name: query-practice-knowledge
125+
metadata: {}

claude_platform/agents/lik-query-project-index.yaml

Lines changed: 0 additions & 92 deletions
This file was deleted.

0 commit comments

Comments
 (0)