Enforcing Nophi Logging
maziyarpanahi/openmed
Add a logging and telemetry guard that scrubs or blocks PHI from logs, traces, and error reports around an OpenMed deployment.
Debug applications with motel, a local OpenTelemetry ingest and query server.
$ npx skills add kitlangton/motel --skill motel-debug -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kitlangton/motel motel-debug --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/kitlangton/motel.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/motel-debug .claude/skills/motel-debug && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "motel-debug" agent skill from https://github.com/kitlangton/motel/tree/main/skills/motel-debug into .claude/skills/motel-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motel-debug", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/kitlangton/motel/tree/main/skills/motel-debugType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add kitlangton/motel --skill motel-debug -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kitlangton/motel motel-debug --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kitlangton/motel.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/motel-debug .agents/skills/motel-debug && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "motel-debug" agent skill from https://github.com/kitlangton/motel/tree/main/skills/motel-debug into .agents/skills/motel-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motel-debug", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kitlangton/motel --skill motel-debug -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kitlangton/motel motel-debug --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kitlangton/motel.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/motel-debug .cursor/skills/motel-debug && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "motel-debug" agent skill from https://github.com/kitlangton/motel/tree/main/skills/motel-debug into .cursor/skills/motel-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motel-debug", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/kitlangton/motel.git --path skills/motel-debug--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add kitlangton/motel --skill motel-debug -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kitlangton/motel motel-debug --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kitlangton/motel.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/motel-debug .gemini/skills/motel-debug && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "motel-debug" agent skill from https://github.com/kitlangton/motel/tree/main/skills/motel-debug into .gemini/skills/motel-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motel-debug", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install kitlangton/motel motel-debugInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add kitlangton/motel --skill motel-debug -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kitlangton/motel.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/motel-debug .github/skills/motel-debug && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "motel-debug" agent skill from https://github.com/kitlangton/motel/tree/main/skills/motel-debug into .github/skills/motel-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motel-debug", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add kitlangton/motel --skill motel-debug -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kitlangton/motel motel-debug --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kitlangton/motel.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/motel-debug .opencode/skills/motel-debug && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "motel-debug" agent skill from https://github.com/kitlangton/motel/tree/main/skills/motel-debug into .opencode/skills/motel-debug/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "motel-debug", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
motel-debugDebug applications with motel, a local OpenTelemetry ingest and query server.
Motel Debug is an agent skill from kitlangton/motel. Debug applications with motel, a local OpenTelemetry ingest and query server. Use when the user wants runtime-evidence debugging with traces or logs, wants temporary debug instrumentation that can be removed later, or needs a repo wired to send OTLP/HTTP telemetry to a local motel server. If the target repo uses Effect or @effect/, also read references/effect.md.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including scripts and reference files (for example `references/effect.md` and `scripts/clear-motel-debug.ts`).
It sits in DevOps & Cloud, covering Observability and Debugging. It works with OpenTelemetry. The licence is MIT.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3118621. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (TypeScript), which the agent can run.
Shell commands in SKILL.md call:
curlbunxgitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use curl, bunx and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Motel Debug loads about 2.2k tokens when it runs, and up to ~2.5k if it reads all its reference files. Until then it costs about 95 tokens; SKILL.md has 879 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from kitlangton/motel at commit 3118621, republished under its MIT licence (© kitlangton). 879 words, ~2,167 tokens.
.claude/skills/motel-debug/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.You are in debug mode. Debug with runtime evidence, not guesswork.
Agents guess based on code alone. You need actual runtime data. Motel is the local OpenTelemetry server that collects traces and logs — use it as your evidence loop.
Default local server details:
http://127.0.0.1:27686POST /v1/tracesPOST /v1/logsGET /api/*GET /openapi.jsonContent-Type: application/jsonIf the user provides a different motel URL, use that instead of the default.
Check GET /api/health. If it returns 200, continue.
If it fails (connection refused, timeout, non-200), motel isn't running. Start it as a background daemon — do not launch the TUI, which is interactive and will block your shell:
motel startmotel start ensures the machine-global managed daemon is running, writes
runtime files under ${XDG_STATE_HOME:-~/.local/state}/motel/, and returns a
JSON status blob. It is idempotent and shared across local projects. If motel isn't on PATH, fall
back to bunx @kitlangton/motel start.
After starting, re-check GET /api/health (may take 1–2s to become
ready). If it still fails, read ${XDG_STATE_HOME:-~/.local/state}/motel/daemon.log for the error
and surface it to the user.
Other lifecycle commands, for reference:
motel status # JSON status (running? pid? originating workdir?)
motel stop # stop the shared managed daemon for all local projectsDiscover reporting services with GET /api/services when needed.
Before touching any code, generate 3-5 specific hypotheses about why the bug occurs. Be precise — "the cache key doesn't include the user ID" is better than "something is wrong with caching."
Add the minimum instrumentation needed to confirm or reject all hypotheses in parallel. Every debug block must:
#region motel debug / #endregion motel debug markersdebug.hypothesis attribute linking it to a specific hypothesisfetch calls)Tag every piece of debug instrumentation with structured attributes so you can query it later. Reuse these keys:
| Key | Purpose |
|---|---|
debug.session | Groups all instrumentation for this debug session |
debug.hypothesis | Links to a specific hypothesis (e.g. "cache-miss", "A") |
debug.step | Position in the flow (e.g. "entry", "before-write", "after-read") |
debug.label | Human-readable description of what this point captures |
Choose log placements based on your hypotheses:
Guidelines:
Query motel for the debug instrumentation:
curl "http://127.0.0.1:27686/api/spans/search?service=<service>&attr.debug.hypothesis=<id>"
curl "http://127.0.0.1:27686/api/logs/search?service=<service>&attr.debug.session=<session>"
curl "http://127.0.0.1:27686/api/traces/search?service=<service>&attr.debug.hypothesis=<id>"For each hypothesis, evaluate: CONFIRMED, REJECTED, or INCONCLUSIVE — cite specific spans, logs, or attribute values as evidence.
Do not fix without runtime evidence. When you fix:
Reproduce the issue again with instrumentation still active. Compare before/after evidence:
Only after the fix is verified and the user confirms there are no remaining issues:
git diff to confirm only the intentional fix remainsWrap every temporary debug block in these exact markers:
// #region motel debug
// temporary debug instrumentation
// #endregion motel debugUse whatever the codebase already provides for tracing and logging. The markers are language-comment wrappers — adapt the comment syntax for non-JS/TS files (e.g. # #region motel debug for Python).
Do not:
setTimeout, sleep, or artificial delays as a "fix"Two filter prefixes for attribute search:
| Prefix | Match type | Example |
|---|---|---|
attr.<key>=<value> | Exact match | attr.debug.hypothesis=cache-miss |
attrContains.<key>=<substring> | Case-insensitive substring | attrContains.ai.prompt.messages=hello world |
curl http://127.0.0.1:27686/api/health
curl http://127.0.0.1:27686/api/services
# Trace search
curl "http://127.0.0.1:27686/api/traces/search?service=<service>&operation=<text>&attr.debug.session=<session>"
# Span search (supports traceId to scope to one trace)
curl "http://127.0.0.1:27686/api/spans/search?service=<service>&traceId=<trace-id>&attr.debug.hypothesis=<id>"
curl "http://127.0.0.1:27686/api/spans/search?service=<service>&attrContains.ai.prompt.messages=<phrase>"
# Log search (supports severity filter, case-insensitive body search)
curl "http://127.0.0.1:27686/api/logs/search?service=<service>&severity=ERROR&body=<text>"
curl "http://127.0.0.1:27686/api/logs/search?service=<service>&attrContains.debug.label=<substring>"
# AI call search (compact summaries with previews)
curl "http://127.0.0.1:27686/api/ai/calls?model=gpt-5.4&sessionId=<session>"
curl "http://127.0.0.1:27686/api/ai/calls?text=<phrase>&status=error"
# AI call detail (full prompt/response payloads)
curl "http://127.0.0.1:27686/api/ai/calls/<span-id>"
# AI stats
curl "http://127.0.0.1:27686/api/ai/stats?groupBy=model&agg=total_input_tokens"
curl http://127.0.0.1:27686/openapi.jsonList and search responses include meta.nextCursor when more data is available.
Motel gives you trace-correlated data — you can see which span a debug log belongs to, the parent operation, timing, and the full trace tree. Use GET /api/traces/<trace-id>/spans and GET /api/spans/<span-id>/logs to navigate the correlation.
For AI/LLM calls, use /api/ai/calls for compact searchable summaries (with prompt/response previews and token usage), and /api/ai/calls/<span-id> for full payloads.
If the target repo uses Effect, read references/effect.md before changing runtime wiring or adding instrumentation.
Use the bundled script at scripts/clear-motel-debug.ts when you want deterministic cleanup. It removes every block between #region motel debug and #endregion motel debug in JS/TS files and fails on unmatched markers.
If you cannot run the script, delete every marked block manually and then grep for #region motel debug to confirm none remain.
© kitlangton, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (scripts, references) in skills/motel-debug of kitlangton/motel.
Open the folder on GitHubat commit 3118621
Motel Debug next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Motel Debug this skillkitlangton/motel | 298 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Enforcing Nophi Loggingmaziyarpanahi/openmed | 5.5k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Aspiremicrosoft/aspire.dev | 196 | 4 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Codex Session Debuggingweave-os/router | 5.6k | — | ~4.5k | Automated safety check: Warn | Apache-2.0 | |
| Aspire Service DefaultsAaronontheweb/dotnet-skills | 1.2k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Log Aggregationaspectrr/deer | 405 | — | ~1.4k | Automated safety check: Pass | MIT |
maziyarpanahi/openmed
Add a logging and telemetry guard that scrubs or blocks PHI from logs, traces, and error reports around an OpenMed deployment.
microsoft/aspire.dev
Orchestrates Aspire distributed applications using the Aspire CLI for running, debugging, and managing distributed apps.
weave-os/router
Correlates a Codex CLI session's local transcript with a model router's production logs to explain why a reply rendered the way it did.
Aaronontheweb/dotnet-skills
Sets up a shared ServiceDefaults project for .NET Aspire apps that centralizes OpenTelemetry, health checks, HTTP resilience and service discovery for every service.
aspectrr/deer
ELK Stack deployment, Logstash pipeline building, Filebeat configuration, and Kibana dashboard setup.
fcakyon/claude-codex-settings
This skill should be used when user asks about "GCloud logs", "Cloud Logging queries", "Google Cloud metrics", "GCP observability", "trace analysis", or "debugging production issues on GCP".
Works with
Categories
Debug applications with motel, a local OpenTelemetry ingest and query server. Motel Debug is an agent skill from kitlangton/motel. Debug applications with motel, a local OpenTelemetry ingest and query server.
Motel Debug fits situations like: the user wants runtime-evidence debugging with traces; wants temporary debug instrumentation that can be removed later; needs a repo wired to send OTLP/HTTP telemetry to a local motel server.
Run `npx skills add kitlangton/motel --skill motel-debug -a claude-code`. Or copy the skill folder (skills/motel-debug in kitlangton/motel) into .claude/skills/motel-debug in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kitlangton/motel --skill motel-debug -a codex`. Or copy the skill folder (skills/motel-debug in kitlangton/motel) into .agents/skills/motel-debug in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kitlangton/motel --skill motel-debug -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/motel-debug, .gemini/skills/motel-debug, .github/skills/motel-debug and .opencode/skills/motel-debug in your project.
Going by SKILL.md and its folder, Motel Debug needs TypeScript for the scripts in its folder and the command-line tools its instructions call (curl, bunx and git). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use curl and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Motel Debug is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 334 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Motel Debug: Enforcing Nophi Logging (maziyarpanahi/openmed, 5.5k stars), Aspire (microsoft/aspire.dev, 196 stars), Codex Session Debugging (weave-os/router, 5.6k stars) and Aspire Service Defaults (Aaronontheweb/dotnet-skills, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kitlangton (a GitHub user) maintains it in kitlangton/motel, which has 298 GitHub stars. The repository was last updated on September 2, 2026.
Source: kitlangton/motel on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.