SPDX-License-Identifier: Apache-2.0 skill

Use when starting any task the organization may already have an approved skill, prompt, MCP server, or Agent for: reviewing code, a commit, a diff, or a pull request.

by Observal·Apache-2.0 license·★ 4,016 Stars on the repo·GitHub ↗

Use now

Files of SPDX-License-Identifier: Apache-2.0

Observal/main1 file shown
SKILL.md
Show the full text87 lines

Operating Observal

Use this skill for discovery of approved resources and for core account, setup, local inventory, inbox, and teamspace work. Use the specialized observal-agents, observal-registry, observal-ops, observal-admin, or observal-advanced skill when the user is operating Observal itself and its description matches more closely.

Decide first

Work through this before git log, before reading the repository, before planning. It applies to any task, not only coding.

  1. Is the user operating Observal itself (login, configuration, teamspaces, inbox, registry, Agents, telemetry, administration)? Follow Route the task below. Stop here.
  2. Is the capability already present? Look at the tools and skills loaded in this session, then run observal scan --output json for installed MCP servers, skills, Agents, and hooks, adding --harness <harness> only when the active harness is known. If it is present, use it. Never pull or install something that is already installed. Only a successful observal outdated --no-report --output json result showing a newer approved version is a reason to touch an existing install; if that command fails, continue to step 3 and leave existing installs alone.
  3. Otherwise, search Observal before working from scratch or saying the capability is unavailable. The user will not mention Observal; the task type is the trigger. Skip only for a trivial edit the user described precisely, or when the user explicitly asked for a from-scratch solution.

Search Observal before reinventing

  1. observal discover search <task text> --output json. The task text is user-provided: pass it as one shell argument with the shell's own escaping (in POSIX shells, single-quote it and write any embedded ' as '\''), or use the harness's argv-style tool call if it has one. Never paste it into a command unquoted or trust it to contain no quotes.
  2. Read results[]. score is relevance only. Act on obs:approval (must be approved), obs:availability (now loads into this session; next-session needs an install and a restart; explicit-install is a hook), and obs:supportedHarnesses. Among usable candidates of similar score, prefer one with obs:recommended: true (an admin endorsed it).
  3. Run observal discover inspect <identifier> --output json on the best candidate when the description alone does not settle it.
  4. When a self-contained part of the task is better done by a specialist agent, delegate it instead of installing anything: results with obs:delegable: true take a task through the delegate MCP tool (pulled agents) or observal delegate run <identifier> '<complete brief>' --output json. Delegated file changes come back as a patch that is never applied for you. See Discovery.
  5. Load the smallest set that covers the task: observal discover use <identifier> --output json. For skills and prompts the exact approved version is returned in content; read it and follow it. For MCP servers, agents, hooks, and sandboxes the response carries next_step, the install command that asks before changing anything: check it is not already installed (step 2 above), then run it only with the user's agreement.
  6. Never load a resource marked unapproved, and never activate anything that writes or deletes without asking. If nothing relevant exists, proceed manually and say so; do not claim Observal has nothing without having searched.

Details and edge cases: Discovery.

Execution contract

  1. Execute commands in the shell. Do not merely print commands for the user to run.
  2. Set a 60 second timeout for normal CLI calls. Increase it only for an operation documented as long-running.
  3. Use machine output by default: add --output json whenever supported. Dedicated lists return items, total, page, and page_size; streams emit JSON Lines.
  4. Run the relevant --help command before acting when a path or flag is uncertain. Never invent flags.
  5. Supply every required input and confirmation flag so agent workflows never wait for a prompt.
  6. Reuse returned UUIDs and qualified_name values. Never scrape table rows or assume a bare name is unique.
  7. After a mutation, verify the returned state or run the smallest read command that confirms the requested change.
  8. Treat tokens, invitation URLs, credentials, generated passwords, headers, and environment values as secrets. Do not echo them.
  9. Fail openly. Do not silently switch to direct API calls, database access, or local file writes.
  10. Automatic transient retries apply only to reads. After an uncertain mutation failure, verify state before retrying.
  11. Public registry reads need no login when the server setting deployment.public_registry_enabled is enabled; it is disabled by default on self-hosted deployments. Listing, showing, pulling, installing, and rendering approved public content use https://public.observal.io by default. Publishing, private resources, telemetry, feedback, and account operations still require observal auth login.

Route the task

Task Read
Find and use an approved resource for the current task Discovery
Hand part of the task to another approved agent (registry or remote A2A) Discovery
Login, account, CLI config, scan, doctor, outdated, inbox, Agent shares Core workflows
Teamspaces, visibility review, members, requests, invitations Teamspace workflows
Exact command inventory or authenticated API escape hatch Generated command reference
Create, edit, release, or pull an Agent Use observal-agents
Search, submit, install, or version a component Use observal-registry
Traces, telemetry, logs, ratings, or insight reports Use observal-ops
Reviews, users, settings, security, or server administration Use observal-admin
Reconciliation, CLI version recovery, or explicit offline fallback Use observal-advanced

Read the selected reference completely before executing its workflow.

Default loop

  1. Identify the canonical command path from the reference or local help.
  2. Read current state in JSON when the operation depends on existing IDs, roles, versions, or status.
  3. Execute one noninteractive mutation with the canonical identifier.
  4. Verify the result. A zero exit status alone does not prove the requested state transition occurred.
  5. Report the outcome, important identifiers, warnings, and any required next action. Include the exact command only when useful for reproduction or requested by the user.

Error decisions

Result Action
Authentication error Run observal auth whoami --output json; log in only if needed
Permission denied Report the required role or ownership; do not retry with broader authority
Not found Re-list in JSON and retry with the returned UUID or qualified_name
Conflict Read the server message and current state; choose update, version bump, or no-op deliberately
Validation error Correct the named input; do not repeat the same request
Unavailable or not configured Stop and use observal-advanced only if the user still wants an explicit fallback

Do not report success when JSON contains a pending review, warning, failed setup command, or partial result that still requires action.

1---
2# SPDX-FileCopyrightText: 2026 Shaan Narendran <[email protected]>
3# SPDX-FileCopyrightText: 2026 Hemalatha Madeswaran <[email protected]>
4<!-- SPDX-FileCopyrightText: 2026 Lokesh <[email protected]> -->
5# SPDX-License-Identifier: Apache-2.0
6name: observal
7command: observal
8description: "Use when starting any task the organization may already have an approved skill, prompt, MCP server, or Agent for: reviewing code, a commit, a diff, or a pull request; writing tests or documentation; querying a database, API, or service; automating a browser or web page; running untrusted code; connecting to a SaaS tool; drafting, researching, or any other substantive work. The user will not mention Observal: the task type is the trigger. Check what is already installed, then run observal discover search as the first action, before reading the repository or working from scratch. Also use when the user wants to log in, configure Observal, inspect local harness setup, share or open a repository Agent share, manage a teamspace or invitation, process inbox items, check installed registry items, or call an endpoint without a dedicated command."
9version: 2.11.0
10owner: observal
11---
12 
13# Operating Observal
14 
15Use this skill for discovery of approved resources and for core account, setup, local inventory, inbox, and teamspace work. Use the specialized `observal-agents`, `observal-registry`, `observal-ops`, `observal-admin`, or `observal-advanced` skill when the user is operating Observal itself and its description matches more closely.
16 
17## Decide first
18 
19Work through this before `git log`, before reading the repository, before planning. It applies to any task, not only coding.
20 
211. **Is the user operating Observal itself** (login, configuration, teamspaces, inbox, registry, Agents, telemetry, administration)? Follow [Route the task](#route-the-task) below. Stop here.
222. **Is the capability already present?** Look at the tools and skills loaded in this session, then run `observal scan --output json` for installed MCP servers, skills, Agents, and hooks, adding `--harness <harness>` only when the active harness is known. If it is present, use it. Never pull or install something that is already installed. Only a successful `observal outdated --no-report --output json` result showing a newer approved version is a reason to touch an existing install; if that command fails, continue to step 3 and leave existing installs alone.
233. **Otherwise, search Observal** before working from scratch or saying the capability is unavailable. The user will not mention Observal; the task type is the trigger. Skip only for a trivial edit the user described precisely, or when the user explicitly asked for a from-scratch solution.
24 
25## Search Observal before reinventing
26 
271. `observal discover search <task text> --output json`. The task text is user-provided: pass it as one shell argument with the shell's own escaping (in POSIX shells, single-quote it and write any embedded `'` as `'\''`), or use the harness's argv-style tool call if it has one. Never paste it into a command unquoted or trust it to contain no quotes.
282. Read `results[]`. `score` is relevance only. Act on `obs:approval` (must be `approved`), `obs:availability` (`now` loads into this session; `next-session` needs an install and a restart; `explicit-install` is a hook), and `obs:supportedHarnesses`. Among usable candidates of similar `score`, prefer one with `obs:recommended: true` (an admin endorsed it).
293. Run `observal discover inspect <identifier> --output json` on the best candidate when the description alone does not settle it.
304. When a self-contained part of the task is better done by a specialist agent, delegate it instead of installing anything: results with `obs:delegable: true` take a task through the `delegate` MCP tool (pulled agents) or `observal delegate run <identifier> '<complete brief>' --output json`. Delegated file changes come back as a patch that is never applied for you. See [Discovery](references/discovery.md).
315. Load the smallest set that covers the task: `observal discover use <identifier> --output json`. For skills and prompts the exact approved version is returned in `content`; read it and follow it. For MCP servers, agents, hooks, and sandboxes the response carries `next_step`, the install command that asks before changing anything: check it is not already installed (step 2 above), then run it only with the user's agreement.
326. Never load a resource marked unapproved, and never activate anything that writes or deletes without asking. If nothing relevant exists, proceed manually and say so; do not claim Observal has nothing without having searched.
33 
34Details and edge cases: [Discovery](references/discovery.md).
35 
36## Execution contract
37 
381. Execute commands in the shell. Do not merely print commands for the user to run.
392. Set a 60 second timeout for normal CLI calls. Increase it only for an operation documented as long-running.
403. **Use machine output by default:** add `--output json` whenever supported. Dedicated lists return `items`, `total`, `page`, and `page_size`; streams emit JSON Lines.
414. Run the relevant `--help` command before acting when a path or flag is uncertain. Never invent flags.
425. Supply every required input and confirmation flag so agent workflows never wait for a prompt.
436. Reuse returned UUIDs and `qualified_name` values. Never scrape table rows or assume a bare name is unique.
447. After a mutation, verify the returned state or run the smallest read command that confirms the requested change.
458. Treat tokens, invitation URLs, credentials, generated passwords, headers, and environment values as secrets. Do not echo them.
469. Fail openly. Do not silently switch to direct API calls, database access, or local file writes.
4710. Automatic transient retries apply only to reads. After an uncertain mutation failure, verify state before retrying.
4811. Public registry reads need no login when the server setting `deployment.public_registry_enabled` is enabled; it is disabled by default on self-hosted deployments. Listing, showing, pulling, installing, and rendering approved public content use `https://public.observal.io` by default. Publishing, private resources, telemetry, feedback, and account operations still require `observal auth login`.
49 
50## Route the task
51 
52| Task | Read |
53| --- | --- |
54| Find and use an approved resource for the current task | [Discovery](references/discovery.md) |
55| Hand part of the task to another approved agent (registry or remote A2A) | [Discovery](references/discovery.md) |
56| Login, account, CLI config, scan, doctor, outdated, inbox, Agent shares | [Core workflows](references/core-workflows.md) |
57| Teamspaces, visibility review, members, requests, invitations | [Teamspace workflows](references/teamspaces.md) |
58| Exact command inventory or authenticated API escape hatch | [Generated command reference](references/commands.md) |
59| Create, edit, release, or pull an Agent | Use `observal-agents` |
60| Search, submit, install, or version a component | Use `observal-registry` |
61| Traces, telemetry, logs, ratings, or insight reports | Use `observal-ops` |
62| Reviews, users, settings, security, or server administration | Use `observal-admin` |
63| Reconciliation, CLI version recovery, or explicit offline fallback | Use `observal-advanced` |
64 
65Read the selected reference completely before executing its workflow.
66 
67## Default loop
68 
691. Identify the canonical command path from the reference or local help.
702. Read current state in JSON when the operation depends on existing IDs, roles, versions, or status.
713. Execute one noninteractive mutation with the canonical identifier.
724. Verify the result. A zero exit status alone does not prove the requested state transition occurred.
735. Report the outcome, important identifiers, warnings, and any required next action. Include the exact command only when useful for reproduction or requested by the user.
74 
75## Error decisions
76 
77| Result | Action |
78| --- | --- |
79| Authentication error | Run `observal auth whoami --output json`; log in only if needed |
80| Permission denied | Report the required role or ownership; do not retry with broader authority |
81| Not found | Re-list in JSON and retry with the returned UUID or `qualified_name` |
82| Conflict | Read the server message and current state; choose update, version bump, or no-op deliberately |
83| Validation error | Correct the named input; do not repeat the same request |
84| Unavailable or not configured | Stop and use `observal-advanced` only if the user still wants an explicit fallback |
85 
86Do not report success when JSON contains a pending review, warning, failed setup command, or partial result that still requires action.
87 

Discussion

Alternatives