{
  "markdown": "# signet-first\n\nA [Signet](https://github.com/Signet-AI/signetai) skill that forces AI agents to use Signet as their\nprimary memory system — storing session knowledge in the Signet database and searching it before\nfalling back to markdown files.\n\n## What It Does\n\n**Search before acting** — When the agent needs context from previous work, it searches\nmemory first (Signet when available, native memory otherwise). Only if no result answers\nthe query does it fall back to project files.\n\n**Store durable knowledge** — After investigations, decisions, and discoveries, the agent\nstores synthesized conclusions in memory for future sessions.\n\n**Session continuity** — Each non-trivial session ends with a structured summary. The next\nsession searches for it before doing anything else, eliminating cold starts.\n\n**Progressive enhancement** — All three behaviors work with any memory backend. Signet\nusers get scoped search, typed storage, and knowledge graph traversal. Non-Signet users\nget memory discipline through their platform's native system. On platforms with no writable\nmemory, only the search-before-act discipline (checking project files before assuming)\napplies.\n\n## Why\n\n### The problem: coding agents have no memory\n\nAI coding agents (Claude Code, OpenCode, Cursor, Codex) have no built-in cross-session memory.\nEach session starts blank — the agent reads a static instruction file (`CLAUDE.md`,\n`AGENTS.md`, `.cursorrules`) and nothing else. Yesterday's decisions, last week's architecture\nanalysis, the test command you corrected three sessions ago — all gone.\n\n### Signet adds memory, but consumption is a bottleneck\n\n[Signet](https://github.com/Signet-AI/signetai) solves the storage side: a SQLite database\nwith knowledge graph entities, FTS5 keyword search, 10 typed memory categories, and structured\nmetadata. But the default way agents consume this memory is through MEMORY.md — a flat\nmarkdown file the daemon auto-generates and injects into the system prompt every session.\n\nThis breaks at scale:\n\n- **MEMORY.md has a 5000 token hard cap** (configurable in `agent.yaml`, verified in\n  `memory-head.ts`). With 20 projects, each gets ~250 tokens — roughly 2-3 memories per\n  project. The daemon uses a rolling window: recent entries push older ones out, regardless\n  of importance. There is no priority-based truncation — a trivial session note takes the\n  same space as a critical architectural decision.\n\n- **No project scoping.** MEMORY.md is global. Working on project A? It still contains\n  memories about projects B through T. The Signet database supports a `scope` field per\n  memory and queries can filter by it — but MEMORY.md doesn't use this. The agent starts\n  every session reading cross-project noise.\n\n- **Token waste on redundant exploration.** Without a search-first protocol, agents default\n  to firing background explore/librarian agents for information already in the database.\n  Each subagent receives the full prompt + tools + its own context window. In a real-world\n  test, an agent fired 3 background agents (~3 minutes, full context each) to research a\n  topic where Signet already held ~80% of the answer. A `signet_memory_search` call takes\n  less than 2 seconds.\n\n- **Cold start every session.** The agent doesn't know what was accomplished yesterday,\n  what decisions were made, or what's still unfinished. Without a handoff mechanism, the\n  first 5-10 minutes of every session are wasted re-discovering the project state.\n\n- **Fixed token cost per session.** MEMORY.md + AGENTS.md + IDENTITY.md + SOUL.md +\n  USER.md are injected every session start regardless of relevance (~550 tokens empty,\n  ~6000-7000 tokens when filled across 20 projects). This is a fixed cost on every turn\n  — the agent pays it whether the content is relevant or not.\n\n### What this skill changes\n\nsignet-first teaches the agent to query the database directly instead of reading the\nMEMORY.md dump — scoped to the current project, filtered by type, ranked by relevance.\nTypical result: 500-2000 tokens of exactly what's needed, zero cross-project noise.\n\nIt adds three protocols:\n\n- **Search-before-act** — the agent must search Signet before firing any explore/librarian\n  agent, reading any file, or executing any command. This eliminates redundant exploration.\n- **Session handoff** — each session ends with a structured `daily-log` memory. The next\n  session reads it before doing anything else, eliminating cold starts.\n- **Pre-action gate** — before running any build/test/deploy command, the agent searches\n  Signet for the verified procedure instead of relying on its own recall.\n\n## Installation\n\nInstallation differs by platform. The fastest path for all platforms:\n\n### All platforms (one-liner — recommended)\n\nInstalls Signet + the skill + registers the plugin. Auto-detects your harness.\n\n```bash\ncurl -sL https://raw.githubusercontent.com/ostico/signet-first/master/install.sh | bash\n```\n\nOptions: `HARNESS=opencode|claude-code|codex|cursor|gemini|copilot`, `SKIP_SIGNET=1`, `SKILL_ONLY=1` (pass as env vars).\n\n### Tell your agent\n\nPaste the appropriate snippet into your agent chat. The agent will fetch the platform-specific\ninstall guide and follow it:\n\n**OpenCode:**\n```\nInstall signet-first: fetch https://raw.githubusercontent.com/Ostico/signet-first/refs/heads/master/.opencode/INSTALL.md and follow the instructions.\n```\n\n**Claude Code:**\n```\nInstall signet-first: fetch https://raw.githubusercontent.com/Ostico/signet-first/refs/heads/master/.claude-plugin/INSTALL.md and follow the instructions.\n```\n\n**Codex:**\n```\nInstall signet-first: fetch https://raw.githubusercontent.com/Ostico/signet-first/refs/heads/master/.codex/INSTALL.md and follow the instructions.\n```\n\n**Cursor:**\n```\nInstall signet-first: fetch https://raw.githubusercontent.com/Ostico/signet-first/refs/heads/master/.cursor-plugin/INSTALL.md and follow the instructions.\n```\n\n**GitHub Copilot CLI:**\n```\nInstall signet-first: fetch https://raw.githubusercontent.com/Ostico/signet-first/refs/heads/master/.copilot/INSTALL.md and follow the instructions.\n```\n\n**Gemini CLI:**\n```\nInstall signet-first: fetch https://raw.githubusercontent.com/Ostico/signet-first/refs/heads/master/.gemini/INSTALL.md and follow the instructions.\n```\n\n### OpenCode\n\n**Detailed docs:** [.opencode/INSTALL.md](.opencode/INSTALL.md)\n\n```bash\ncurl -sL https://raw.githubusercontent.com/ostico/signet-first/master/install.sh | HARNESS=opencode bash\n```\n\nOr add the plugin directly to `opencode.json`:\n```json\n{\n  \"plugin\": [\"signet-first@git+https://github.com/Ostico/signet-first.git\"]\n}\n```\n\n### Claude Code\n\n**Detailed docs:** [.claude-plugin/INSTALL.md](.claude-plugin/INSTALL.md)\n\n```bash\ncurl -sL https://raw.githubusercontent.com/ostico/signet-first/master/install.sh | HARNESS=claude-code bash\n```\n\nThen register the plugin (user must type these in Claude Code):\n```\n/plugin marketplace add Ostico/signet-first\n/plugin install signet-first@signet-first-dev\n```\n\n### Cursor\n\n**Detailed docs:** [.cursor-plugin/INSTALL.md](.cursor-plugin/INSTALL.md)\n\n```bash\ncurl -sL https://raw.githubusercontent.com/ostico/signet-first/master/install.sh | HARNESS=cursor bash\n```\n\n### Codex\n\n**Detailed docs:** [.codex/INSTALL.md](.codex/INSTALL.md)\n\n```bash\ncurl -sL https://raw.githubusercontent.com/ostico/signet-first/master/install.sh | HARNESS=codex bash\n```\n\n### GitHub Copilot CLI\n\n**Detailed docs:** [.copilot/INSTALL.md](.copilot/INSTALL.md)\n\n```bash\ncopilot plugin install Ostico/signet-first\n```\n\nOr use the full installer:\n```bash\ncurl -sL https://raw.githubusercontent.com/ostico/signet-first/master/install.sh | HARNESS=copilot bash\n```\n\n### Gemini CLI\n\n**Detailed docs:** [.gemini/INSTALL.md](.gemini/INSTALL.md)\n\n```bash\ngemini extensions install https://github.com/Ostico/signet-first\n```\n\nOr use the full installer:\n```bash\ncurl -sL https://raw.githubusercontent.com/ostico/signet-first/master/install.sh | HARNESS=gemini bash\n```\n\n### Verify Installation\n\nStart a new session and ask something you discussed in a previous session. The agent should\nsearch Signet memory first, before firing background agents or reading files.\n\n## Requirements\n\n- [Signet](https://github.com/Signet-AI/signetai) installed and running (`signet status` should show healthy)\n- One of: [OpenCode](https://opencode.ai), Claude Code, Cursor, Codex, Gemini CLI, or Copilot CLI\n\nNo embedding provider required. Signet's knowledge graph traversal + FTS5 keyword search\ncovers all queries. For Signet setup details, see [SIGNET_SETUP.md](SIGNET_SETUP.md).\n\n## Updating\n\n```bash\n# OpenCode plugin — updates automatically on restart\n\n# Git clone (any platform)\ncd <skills-dir>/signet-first && git pull\n\n# Gemini CLI\ngemini extensions update signet-first\n\n# Copilot CLI\ncopilot plugin update signet-first\n```\n\nCheck [CHANGELOG.md](CHANGELOG.md) for what changed between versions.\n\n## Scope\n\n**IN scope:** Session knowledge — analysis results, decisions, conclusions, discoveries,\nuser preferences, codebase patterns, tool evaluations.\n\n**OUT of scope:** Identity files (AGENTS.md, SOUL.md, USER.md), project documentation,\nthe Signet daemon's automatic extraction pipeline.\n\n## Test Suite\n\n5 suites, 48 assertions, zero API calls.\n\n```bash\nbash tests/run-all.sh\n```\n\n## License\n\n[MIT](LICENSE.md)\n",
  "bytes": 9270,
  "sha": "0070e9c3aad225d510acd8cb0e38d5b104fd883ec42f22a1d9dd92086a39df2c",
  "repo_slug": "ostico/signet-first",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_ostico_signet_first_d3821317/readme"
}