accept
免费Accept HQ membership invites from a magic link or raw token.
中文简介正在准备中。当前显示原文说明。
Read a company ontology brief, entity graph, and freshness signals for context.
中文简介正在准备中。当前显示原文说明。
实测评分 未实测
查看安装方法安装前可以查看交给 AI 代理的指令内容。
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.
Use this skill when an agent needs:
company-brief.md (gardener-generated, ranked + token-budgeted)ontology/entities/{type}/{slug}.mdsignal_count (frontmatter)Do NOT use this for:
/indigo:signals skill)/indigo:signals or /indigo:action-items)knowledge/, sources/, or signals/ files individually (slow + noisy — read the brief)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.
The gardener output lives in the company's per-entity vault bucket. Resolve:
companies/manifest.yaml company anchor, ~/.hq/active-company, or ask the user if ambiguous)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 gardeneraws lambda list-functions --query "Functions[?contains(FunctionName,'OntologyGardener')].FunctionName" --output textAnnounce: 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.
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:
## Recent Signals — top N decisions/risks/questions (per brief.max_signals_per_type, default 5)## Source Channels — last-7d count per channel (meeting/email/slack/linear/notion)signal_countIf 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.
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.
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".
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:
/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.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.
aws logs tail /aws/lambda/{GARDENER_FN} --follow --since 5m --format shortHQ-OntologyGardener-{stage} — per-prefix invocation graphs, cheap-path hit rate, costontology-signals-run-cost-{stage}, ontology-sources-run-cost-{stage}, ontology-daily-cost-ceiling-{stage}, ontology-stale-gardener-{stage}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.
company-brief.md directly), skip Step 4.还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
Accept HQ membership invites from a magic link or raw token.
中文简介正在准备中。当前显示原文说明。
Capture qualifying architecture decisions as ADRs in the right HQ or repo location.
中文简介正在准备中。当前显示原文说明。
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.
中文简介正在准备中。当前显示原文说明。
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.
中文简介正在准备中。当前显示原文说明。
Generate dark ASCII banner graphics for HQ and social launch assets.
中文简介正在准备中。当前显示原文说明。
Compare approaches to best-in-class prior art, merge existing work, verify cruft removal, and recommend the most durable design before PRD work.
中文简介正在准备中。当前显示原文说明。