본문으로 건너뛰기
cccskills
무료GitHub에 공개

ontology

Read a company ontology brief, entity graph, and freshness signals for context.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core스타 90(GitHub 90 + cccskills 0)
연동 도구AWS

실행 점수 미검증

설치 방법 보기

포함된 파일(2)

  • SKILL.md8.6 KB
  • agents/openai.yaml130 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Ontology (HQ-shared)

Read the active company's ontology — local first, the cloud gardener's output only as a fallback. Background on the gardener pipeline lives at core/knowledge/public/hq-core/ontology-gardener.md — read that ONCE per session if you need mechanism details; this skill is the runtime API.

When to use

Use this skill when an agent needs:

  • Situational snapshot of a company → read company-brief.md (gardener-generated, ranked + token-budgeted)
  • Entity context for a known person/project/company/concept → read ontology/entities/{type}/{slug}.md
  • Activity signal — which entities are hot recently → sort by signal_count (frontmatter)
  • Cross-references — what signals/sources mention an entity → entity's Relationships section
  • Manual run — to refresh the brief or process new files immediately rather than waiting for the 4h tick

Do NOT use this for:

  • Querying the indigo-signals-mcp MongoDB collections (that's a different store; use the MCP server / /indigo:signals skill)
  • Triaging action items / commitments (use /indigo:signals or /indigo:action-items)
  • Reading raw knowledge/, sources/, or signals/ files individually (slow + noisy — read the brief)

Step 0 — local brief first

Ontology is local-first (spec: core/knowledge/public/hq-core/ontology-local-spec.md). Resolve the company from bash core/scripts/hq-session.sh get company_slug, then render the brief from the local tree:

node core/scripts/ontology-brief.mjs --company {co}

It reads ontology/entities/, every ontology/facts/@*/, and every signal folder you have locally. Sync only delivers what you may read, so the brief shows exactly the facts and signals you were privy to; each line is tagged company or scoped. It writes nothing — never save a rendered brief into the company tree, because another reader may not be entitled to its scoped lines.

If it prints "no local ontology yet" and the company is cloud-backed with the cloud gardener still enabled, fall back to Step 1 below and say so in one line ("local ontology empty — reading the cloud brief"). Otherwise stop here.

Entity lookup (local): ontology/entities/{type}/{slug}.md for identity, and ontology/facts/@*/{type}/{slug}.md for what is known about it.

Step 0.5 — cloud fallback: resolve active company

The gardener output lives in the company's per-entity vault bucket. Resolve:

  • Active company slug from session context (e.g. companies/manifest.yaml company anchor, ~/.hq/active-company, or ask the user if ambiguous)
  • That company's vault bucket — look up via companies/{co}/manifest.yaml vault_bucket field OR derive from the gardener Lambda env (S3_BUCKET) if you operate the HQ cloud backend that runs the gardener
  • That company's gardener Lambda — discover it (if deployed) via aws lambda list-functions --query "Functions[?contains(FunctionName,'OntologyGardener')].FunctionName" --output text

Announce: Ontology context: {company} · bucket {bucket} · gardener {fn-name}

If the active company has no gardener deployed yet (multi-tenant rollout still in progress), say so and stop — there's nothing to read.

Step 1 — Read the brief (default action)

aws s3 cp s3://{bucket}/company-brief.md - 2>&1

The brief is the first thing to read for any "what's going on" question. Sections in order:

  1. ## Recent Signals — top N decisions/risks/questions (per brief.max_signals_per_type, default 5)
  2. ## Source Channels — last-7d count per channel (meeting/email/slack/linear/notion)
  3. Entity sections — top entities by signal_count

If the brief is empty / missing, the gardener has either never run or never had ≥3 entities. In that case, fall back to listing recent signals directly: aws s3 ls s3://{bucket}/signals/ --recursive | tail -20.

Step 2 — Targeted entity lookup

If the user asks about a specific person/project/company/concept:

# Find the entity slug — try canonical name → slug deterministically
SLUG=$(echo "{Name}" | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g' | sed 's/[^a-z0-9-]//g')

# Try each type until one resolves (or query the entity index if available)
for TYPE in person project company concept; do
  aws s3 cp "s3://{bucket}/ontology/entities/$TYPE/$SLUG.md" - 2>/dev/null && echo "found in $TYPE" && break
done

Read the frontmatter for signal_count, last_updated, first_seen. Read the body for description + Relationships section.

Step 3 — "What's hot recently"

Sort entities by signal_count:

aws s3 sync s3://{bucket}/ontology/entities/ /tmp/entities-{co}/ --quiet
for f in /tmp/entities-{co}/**/*.md; do
  count=$(grep -m1 '^signal_count:' "$f" | awk '{print $(2)}')
  echo "$count $f"
done | sort -rn | head -10

Returns the top-10 most-referenced entities. Useful for "who/what is dominating recent activity".

Step 4 — Manual gardener run

Trigger an ad-hoc gardener invocation (don't wait for the 4h tick):

GARDENER_FN=$(aws lambda list-functions \
  --query "Functions[?contains(FunctionName,'OntologyGardener')].FunctionName | [0]" \
  --output text)

aws lambda invoke --function-name "$GARDENER_FN" \
  --invocation-type RequestResponse --cli-binary-format raw-in-base64-out \
  --payload '{"version":"0","detail-type":"Scheduled Event","source":"aws.events","detail":{}}' \
  --log-type Tail /tmp/gardener-response.json 2>&1 | jq -r '.LogResult' | base64 -d | tail -20

Limitations:

  • Uses AWS S3 Files mount at /mnt/s3-{company}/. Files PUT via aws s3 cp may not appear in the mount immediately. Production writers (signals-agent, transcript ingester, source-writer in infra/meeting-storage.ts) DO write through the mount and ARE immediately visible. Use those for end-to-end tests.
  • One company per Lambda today. Multi-tenant rollout to other companies is a separate PRD.

Step 5 — Inspect cheap-path hit rate

The gardener emits SignalRefsResolved + SignalRefsUnresolved counters. High resolved/unresolved ratio = the signals agent is doing a good job of pre-linking entities (no LLM needed for ingestion).

NOW=$(date -u +%FT%TZ)
ONE_DAY_AGO=$(date -u -v-1d +%FT%TZ 2>/dev/null || date -u -d '1 day ago' +%FT%TZ)
GARDENER_NAMESPACE="<your-gardener-cloudwatch-namespace>"  # set to the namespace your HQ cloud backend publishes under

aws cloudwatch get-metric-statistics \
  --namespace "$GARDENER_NAMESPACE" \
  --metric-name SignalRefsResolved \
  --dimensions Name=CompanyId,Value={company} Name=Prefix,Value=signals \
  --start-time "$ONE_DAY_AGO" --end-time "$NOW" \
  --period 3600 --statistics Sum --output text

aws cloudwatch get-metric-statistics \
  --namespace "$GARDENER_NAMESPACE" \
  --metric-name SignalRefsUnresolved \
  --dimensions Name=CompanyId,Value={company} Name=Prefix,Value=signals \
  --start-time "$ONE_DAY_AGO" --end-time "$NOW" \
  --period 3600 --statistics Sum --output text

If unresolved >> resolved, either (a) the signals agent is producing signals for entities not yet in the graph (gardener will LLM-extract them on the next run, capped by signals.max_cost_usd), or (b) the entity files were renamed and entityIdFromPath no longer resolves the refs.

Step 6 — Inspect logs / metrics dashboards

  • Logs: aws logs tail /aws/lambda/{GARDENER_FN} --follow --since 5m --format short
  • Dashboard: CloudWatch HQ-OntologyGardener-{stage} — per-prefix invocation graphs, cheap-path hit rate, cost
  • Cost alarms: ontology-signals-run-cost-{stage}, ontology-sources-run-cost-{stage}, ontology-daily-cost-ceiling-{stage}, ontology-stale-gardener-{stage}

Multi-tenant note

Today the gardener is single-tenant — there's one Lambda instance bound to a single company (COMPANY_ID={company}, mount /mnt/s3-{company}). For another company to benefit from this skill, the HQ cloud backend needs to provision a per-company Lambda OR rewrite the single Lambda to loop over companies. Track in a future PRD; until then this skill is single-company even though its design is multi-tenant.

Rules

  • Read the brief FIRST. Don't iterate entity files until you've checked the ranked summary.
  • Don't write to the vault from this skill — gardener writes are authoritative. To force a re-run, invoke the Lambda (Step 4), don't touch entity files directly.
  • Don't synthesize signal_count or other counters — read the real values from the vault.
  • Respect company isolation: the skill operates on the resolved active company's vault only. Never reach into another company's bucket.
  • If a question can be answered without a gardener call (e.g. read company-brief.md directly), skip Step 4.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

accept

무료

Accept HQ membership invites from a magic link or raw token.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

adr

무료

Capture qualifying architecture decisions as ADRs in the right HQ or repo location.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

architect

무료

Find shallow modules and propose deepening refactors, ranked with file refs; never edits code. Use when code is hard to change or planning a refactor.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

Generate dark ASCII banner graphics for HQ and social launch assets.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

Compare approaches to best-in-class prior art, merge existing work, verify cruft removal, and recommend the most durable design before PRD work.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

indigoai-us/hq-core902026년 10월 26일 업데이트

indigoai-us의 스킬 모두 보기

이 스킬의 문제 신고