ワンクリックで
observe
Single-pass network health observation. Checks API liveness, namespace freshness, drift, computes Network Health Score.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Single-pass network health observation. Checks API liveness, namespace freshness, drift, computes Network Health Score.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Single-pass network health observation. Checks API liveness, namespace freshness, drift, computes Network Health Score.
Deep investigation of a single construct. Identity-reality drift, maintenance pattern, composition analysis.
Autonomous observation loop. Time-boxed cycles with ratcheting health score, commits findings to grimoires.
Synthesize observations into a readable network health report. Aggregates patterns and trends from observation cycles.
Single-pass coherence sense of an ARBITRARY estate (a registry/state pair). Resolves the read-command from operator-local estate-config, shells the estate's own doctor read-only, emits exactly the STATUS|SIGNAL|MISMATCH tile. Sense-only — never mutates the estate.
Sense whether the config the OPERATOR owns is consistent across an estate of Loa repos. Loa is mounted per-repo, so every repo carries its own .loa.config.yaml and there is NO global tier — operator-owned config (model routing, which models review code, effort) gets duplicated across N repos and DRIFTS. This eye walks the estate, classifies each config key by TIER (operator vs project), and fires `drift` when an operator-tier key — one that SHOULD be identical everywhere — holds more than one distinct value. Optionally flags dead model pins against a model SoT. Emits the STATUS|SIGNAL|MISMATCH tile + a config-drift ledger. Sense-only — never mutates a config, never gates.
| name | observe |
| description | Single-pass network health observation. Checks API liveness, namespace freshness, drift, computes Network Health Score. |
| allowed-tools | ["Bash","Read","Grep","Glob","Write","Edit"] |
| user-invocable | true |
| agent | Explore |
Run a single observation pass across the entire constructs network. Produce structured JSONL observations and compute the Network Health Score. This is the atomic unit — /patrol calls this repeatedly, /report synthesizes its output.
/observe # Full network pass
/observe --quick # API-only (skip GitHub checks)
Read the last observation from grimoires/gecko/observations.jsonl (if exists). Extract the previous health_score for ratchet comparison.
# Health endpoints
curl -s https://api.constructs.network/v1/health | jq .
curl -s https://api.constructs.network/v1/health/ready | jq .
# Registry state
curl -s https://api.constructs.network/v1/constructs | jq '.data | length'
Record: api_status (healthy/degraded/down), registered_count, response_time_ms.
# List all construct-* repos under 0xHoneyJar
gh api orgs/0xHoneyJar/repos --paginate -q '.[] | select(.name | startswith("construct-")) | {name, pushed_at, archived}'
For each repo, record:
slug: repo name minus construct- prefixlast_push: ISO timestampdays_stale: days since last pusharchived: booleanFlag constructs with days_stale > 30 as STALE. Flag days_stale > 90 as ABANDONED.
Query the API or parse construct.yaml files for domain[0] to determine category assignments. Count constructs per category across the 8 canonical categories:
Flag categories with 0 constructs as EMPTY_CATEGORY.
For each construct in the namespace:
identity/persona.yaml — extract cognitiveFrame.archetype and voice.personality_markersskills/*/SKILL.md — extract actual methodology stepsALIGNED (0), MINOR_DRIFT (1-2 mismatches), SIGNIFICANT_DRIFT (3+)This step requires cloning or reading repos via gh api. For speed, use:
gh api repos/0xHoneyJar/construct-{slug}/contents/identity/persona.yaml -q .content | base64 -d
gh api repos/0xHoneyJar/construct-{slug}/contents/construct.yaml -q .content | base64 -d
Weighted composite (0-100):
| Sub-Signal | Weight | Scoring |
|---|---|---|
| API Liveness | 0.20 | healthy=100, degraded=50, down=0 |
| Version Freshness | 0.25 | avg(100 - min(days_stale, 100)) across all constructs |
| Category Coverage | 0.15 | (filled_categories / 8) * 100 |
| Identity-Reality Drift | 0.20 | avg(aligned=100, minor=70, significant=30) across all |
| Composition Density | 0.10 | (constructs_with_compose_with / total) * 100 |
| Verification Flow | 0.10 | (non_unverified / total) * 100 |
Append to grimoires/gecko/observations.jsonl:
{
"timestamp": "2026-03-12T00:00:00Z",
"health_score": 72,
"health_delta": -3,
"api_status": "healthy",
"registered_count": 15,
"namespace_count": 16,
"stale_constructs": ["webgl-particles"],
"empty_categories": ["infrastructure"],
"drift_detected": [{"slug": "dynamic-auth", "level": "MINOR_DRIFT"}],
"anomalies": []
}
If health_delta < 0 (health degraded), surface the contributing sub-signals as findings. If health_delta >= 0, report quietly — the ratchet held.
Output format (to stdout):
gecko | health: 72 (-3) | api: healthy | stale: 1 | drift: 1 | categories: 7/8
If anomalies exist, list them. Otherwise, one line is enough.
| Path | Description |
|---|---|
grimoires/gecko/observations.jsonl | Append-only observation log |
degraded, not anomaly — the network survives without the registry