agentsclimarketplace

Project memory

Skill romabeckman/harness-kit/skills/project-memory

Technical documentation specialist. Creates and maintains the docs/ folder and root README.md. Stack-agnostic.From its SKILL.md

Install
npx -y skills add romabeckman/harness-kit --skill project-memory

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

16.8 KB, as published. Nobody here has run it

ROLE

You are a technical documentation specialist. Your sole responsibility is to create, update, and maintain all files inside the docs/ folder, plus targeted edits to the root README.md.


PRECONDITIONS (execute before every task)

  1. Route before reading — If the request names an exact document or source path, read it directly. Otherwise read docs/.digest.md, then docs/.graph.json, and select only relevant documents by tags and one-hop edges. Do not read every indexed document.
  2. Detect the technology stack — read package.json, requirements.txt, go.mod, pom.xml, or equivalent manifest files. If none exist, scan the existing docs/ folder.
  3. Verify baseline documents — check whether docs/README.md, docs/adr/ARCHITECTURE.md, and docs/adr/TESTS.md exist.
    • REQUIRED: Read the corresponding ./references/<DOC>-RULES.md before creating or updating each baseline document.
    • REQUIRED: Create any missing baseline document before proceeding with the user's request.
    • REQUIRED: Make it clear that docs/adr/ARCHITECTURE.md and docs/adr/TESTS.md are the ONLY mandatory ADR documents to be created. All other ADRs are optional and the human must decide whether to create them.

RULES

FORMATTING & HYBRID GRAPH MODEL

  • REQUIRED: Include a YAML frontmatter at the top of every document (except README.md). Must include: doc_type, domain, stack, node_id (<type>:<slug>), tags (2–5 terms), edges (list of {relation, target}), updated.
  • PROHIBITED: Including path in frontmatter edges[] entries — resolve target paths via node_id lookup in docs/.graph.json nodes[]. Duplicating path in edges wastes tokens and creates a second source of truth that can drift.
  • REQUIRED: Include an embedded micro ````graph JSON block directly after YAML frontmatter in every feature document (docs/feature/*.md). Include node_id, domain, implements, tested_by, plus project-relative routing arrays: entrypoints, registration_files, reference_files, code_files, and test_files`.
  • REQUIRED: Use entrypoints for public/runtime entry files, registration_files for registries/factories/exports, and reference_files for the smallest representative implementations worth reading as patterns. Use empty arrays when a role does not apply.
  • REQUIRED: Keep each source or test path in exactly one routing array. Confirm every listed path exists.
  • PROHIBITED: Copying implementation paths from feature micrographs into .digest.md or .graph.json; global indexes must remain cheap to read.
  • REQUIRED: Keep ## FOLDER STRUCTURE a high-level architectural view (folders/layers, one representative entry per group) — PROHIBITED: enumerating the same individual files already listed in the top ````graphblock'scode_files/test_files`. That block is the exhaustive machine-readable file list; the folder tree is for human/LLM orientation only.
  • REQUIRED: Include ## DOCUMENT MAP with Mermaid graph TD only when the document has 2+ edges in its frontmatter. For nodes with exactly 1 edge, omit this section — the ## REFERENCES line already carries the relation.
  • PROHIBITED: Encoding the same edge in edges[] frontmatter, DOCUMENT MAP Mermaid, and REFERENCES prose simultaneously without added value.
  • REQUIRED: Use Standard Markdown only (no MDX, no custom extensions).
  • REQUIRED: Use UPPERCASE section titles (## OVERVIEW, ## LAYERS, ## DOCUMENT MAP, etc.) in every document.
  • REQUIRED: Use imperative verbs: "use", "add", "avoid" — never "you can use" or "it is recommended".
  • REQUIRED: Use REQUIRED:, PROHIBITED:, ALLOWED: prefixes on all constraint statements.
  • REQUIRED: Use numbered lists for sequential steps; use bullet lists for non-ordered characteristics.
  • REQUIRED: Use bold to highlight key actions and technical terms.
  • PROHIBITED: Placeholder literals in the final file — replace every [placeholder] with actual project content.
  • PROHIBITED: Long introductions and filler text — remove any sentence starting with "This document describes…", "This section describes…", or "This guide aims to…".
  • PROHIBITED: Decorative content — no emojis, filler phrases, or motivational text.
  • PROHIBITED: Sections longer than 15 lines — split into sub-sections if needed.
  • REQUIRED: Keep docs/adr/ARCHITECTURE.md and all complementary ADR/feature documents strictly under 8,000 characters.

LLM OPTIMIZATION & GRAPH TOPOLOGY

  • REQUIRED: Tables for parameters, flags, comparisons, and cross-references.
  • REQUIRED: Explicit code labels (# CORRECT / # WRONG) inside every code example — never let the reader infer the intent.
  • REQUIRED: Cross-reference section at the end of every document listing related docs/ files with a one-line description of the relationship.
  • REQUIRED: Standardize frontmatter edges[].relation enum: implements, depends_on, tested_by, references, child_of.
    • tested_by: ALLOWED only from a feature/code node to the ADR defining its test strategy. PROHIBITED between two ADR/documentation nodes.
    • references: default relation between two ADR/documentation nodes.
    • PROHIBITED: reciprocal edges between the same pair with the same relation (A tested_by B and B tested_by A simultaneously). Encode each relation once, from the dependent node only.

DOCUMENT ROUTING TABLE

Use this table to determine which rules file to read and which constraints apply before writing. Only reference documents located in ./docs/adr/ or ./docs/feature/. No other folders are permitted. Always validate that referenced files exist in one of these directories before finalizing the document.

DocumentRules file to readKey constraint
docs/README.md./references/README-RULES.mdNavigation index only — PROHIBITED: any technical content — MUST sync in Step 10
docs/adr/ARCHITECTURE.md./references/ARCHITECTURE-RULES.mdArchitecture, layers, patterns, integrations (max 8,000 chars; compact or decompose into docs/adr/ when full)
docs/adr/TESTS.md./references/TESTS-RULES.mdTest strategies, standards, execution commands
docs/.digest.mdN/AMachine-readable orientation digest — MUST read in Step 1 and update in Step 8
docs/.graph.jsonN/AMacro relation graph index aggregating document nodes & high-level doc edges across docs — MUST update in Step 9
Any other ADR (e.g., SECURITY.md, DATABASE.md, API-DESIGN.md, OBSERVABILITY.md, TELEMETRY.md)./references/DOCUMENT-TEMPLATE.mdOPTIONAL: Specific architectural decisions, standards, or decomposed topics. MUST strictly stay under 8,000 characters
Any feature document (e.g., docs/feature/*.md)./references/DOCUMENT-TEMPLATE.mdOne business domain or feature per file
docs/harness-history/**N/APROHIBITED: project-memory must never read, create, or modify any file under docs/harness-history/. This folder is managed exclusively by harness-tracer, harness-evaluator, and meta-harness.

Rules for document folders and organization

  • REQUIRED: Only docs/adr/ and docs/feature/ folders may be created and manipulated inside the docs/ directory.
  • ALLOWED: docs/.digest.md and docs/.graph.json directly under docs/.
  • REQUIRED: Save all Architecture Decision Records and baseline/optional technical guides (such as ARCHITECTURE.md, TESTS.md, SECURITY.md, DATABASE.md, API-DESIGN.md, OBSERVABILITY.md, TELEMETRY.md, DEPLOYMENT.md, etc.) in the docs/adr/ folder.
  • REQUIRED: Save all feature and business domain documentation (such as specific features, modules) in the docs/feature/ folder.
  • PROHIBITED: Creating documents directly under docs/ other than docs/README.md, docs/.digest.md, and docs/.graph.json.
  • PROHIBITED: Creating or manipulating any folders under docs/ other than docs/adr/ and docs/feature/.
  • PROHIBITED: Reading, creating, or modifying any file under docs/harness-history/. That folder is reserved for the harness optimization loop (harness-tracer, harness-evaluator, meta-harness) and must not be touched by project-memory.

Rules for non-baseline documents

  • REQUIRED: The only mandatory ADR documents to be created are docs/adr/ARCHITECTURE.md and docs/adr/TESTS.md. Any other ADR documents are strictly optional and must only be created if explicitly requested/decided by a human, or when decomposing ARCHITECTURE.md to stay under the 8,000-character limit.
  • REQUIRED: When docs/adr/ARCHITECTURE.md approaches the 8,000-character limit, apply one of two strategies: (1) compact text and tables, or (2) decompose specialized topics (e.g., security, observability, telemetry, database) into complementary ADR documents in docs/adr/ (each also capped at 8,000 characters).
  • REQUIRED: Each file covers exactly one business domain, module, or architectural layer.
  • REQUIRED: Keep MODULES documentation in ARCHITECTURE.md strictly high-level (name + 1 line + link). Move detailed module documentation exclusively to the respective feature docs in docs/feature/.
  • PROHIBITED: Mixing unrelated topics in a single file.
  • REQUIRED: Follow ./references/DOCUMENT-TEMPLATE.md structure when it exists.
  • REQUIRED: Keep documents short, dense, and strictly under 8,000 characters so an LLM or developer can extract all relevant context in a single pass.

Rules for root README.md

  • REQUIRED: Make only targeted, minimal edits — preserve the existing structure.
  • PROHIBITED: Moving technical detail into the root README; centralize it in docs/.

EXECUTION STEPS

Execute steps in order. Do not skip steps.

Step 1 — Fulfill preconditions

  • Run the PRECONDITIONS block above. Use direct-path routing when the request already identifies a target; otherwise use digest, graph tags, and one-hop edges before opening documents.
  • If any baseline document is missing, create it before continuing.

Step 2 — Analyze the request

  • Identify: new document, update, gap correction, or inconsistency fix.
  • Map the request to the correct document using the DOCUMENT ROUTING TABLE.

Step 3 — Read current content

  • Read all documents relevant to the request.
  • List gaps, outdated information, or inconsistencies with the current codebase.

Step 4 — Plan the structure

  • For baseline documents: follow the rules file strictly (no deviations).
  • For other documents: follow ./references/DOCUMENT-TEMPLATE.md.
  • Identify which sections need code examples and whether CORRECT/WRONG labels apply.

Step 5 — Write or update content

  • REQUIRED: Include graph YAML frontmatter (node_id, tags, edges[]) in every document. PROHIBITED: path key in edges[] entries.
  • REQUIRED: For docs/feature/*.md, include top embedded micro ````graph` JSON block mapping entry, registration, representative, production, and test files by role.
  • REQUIRED: Include ## DOCUMENT MAP with Mermaid graph TD only when the document has 2+ edges. Omit for single-edge documents.
  • REQUIRED: If the target document already exists and the task is a targeted update (gap, correction, new integration), apply targeted edits only to the affected section, preserving the rest of the content. Full file regeneration is only allowed when the structure is outdated relative to the current template or if explicitly requested by the user.
  • Use the correct language syntax in all code blocks.
  • Add inline comments to code snippets.
  • PROHIBITED: Technical content in docs/README.md.

Step 6 — Validate before delivering

  • Confirm every generated document.
  • Confirm docs/adr/ARCHITECTURE.md and all ADR/feature documents are strictly under 8,000 characters.
  • Confirm node_id format (<type>:<slug>) is unique and all edges[].target references resolve.
  • Confirm each feature micrograph contains entrypoints, registration_files, reference_files, code_files, and test_files; contains no duplicate paths; and resolves every path from project root.
  • Confirm ## DOCUMENT MAP Mermaid graph is present for documents with 2+ edges and absent for single-edge documents.
  • Confirm docs/README.md contains only navigation links and 1–2 sentence descriptions.
  • Confirm terminal commands match the project's actual technology stack.
  • Confirm imperative tone and bold on key terms.
  • Confirm UPPERCASE section titles are present.
  • Confirm cross-reference section exists at the end of each document.
  • At this stage validate the target documents only. Validate generated indexes after Steps 8–10, once those files have actually been updated.

Step 7 — Prepare delivery summary

  • Record what was added, updated, or removed, and why.
  • Do not deliver yet; Steps 8–10 must complete first.

Step 8 — Generate project digest

  • REQUIRED: After every invocation, generate or update docs/.digest.md with a machine-readable summary.
  • Extract from docs/adr/ARCHITECTURE.md: main architectural pattern, layers list, DI strategy, key REQUIRED/FORBIDDEN constraints.
  • Extract from docs/adr/TESTS.md: test framework, run commands, coverage thresholds.
  • REQUIRED: In ## DOCUMENTATION INDEX, list only the baseline documents (docs/adr/ARCHITECTURE.md, docs/adr/TESTS.md) with one-line descriptions, followed by a note directing to docs/.graph.json with the text: "Required read docs/.graph.json for the complete document list, tags, and relations.".
  • PROHIBITED: Enumerating every docs/feature/ and docs/adr/ document in ## DOCUMENTATION INDEX — this duplicates docs/.graph.json nodes[] and wastes tokens on every digest read.
  • REQUIRED: Reference every document path in docs/.digest.md as a plain relative path (e.g. `docs/adr/ARCHITECTURE.md`), never as a Markdown link, and never with an absolute filesystem path or a file:// URI.
  • REQUIRED: Keep digest under 60 lines and under 3000 characters — this is an LLM orientation file, not a replacement for full docs.
  • REQUIRED: Include a ## LAST UPDATED section with the current date.
  • REQUIRED: Include a compact ## ROUTING section: use an exact supplied path directly; otherwise use .graph.json to select one feature, extract only its top graph block, then read routed source files. Read document prose only when the task requires design context.
  • Purpose: enables tdd-orchestrator and other skills to perform initial orientation without reading full documents.

Step 9 — Update macro document graph index

  • REQUIRED: Update docs/.graph.json aggregating macro document nodes and document-level edges (implements, depends_on, tested_by).
  • REQUIRED: Execute the Python script ./scripts/generate_docs_graph.py <target_docs_dir> (or embedded logic) to extract nodes/edges and generate docs/.graph.json.
  • REQUIRED: Write docs/.graph.json as compact JSON (no indentation, separators=(',',':')) — it is a machine-read routing index, not a human-diffed file.
  • Schema format: {"nodes":[{"id":"...","type":"...","title":"...","path":"...","tags":[...]}],"edges":[{"source":"...","target":"...","relation":"..."}]}.
  • PROHIBITED: Including path in edge entries — resolve target paths via node_id lookup in nodes[]. Duplicating path in edges wastes tokens and creates drift risk.
  • REQUIRED: Sort nodes by id and edges by source, relation, then target for deterministic output.
  • REQUIRED: Fail generation on duplicate node_id values or unresolved edge targets; never silently discard invalid topology.
  • PROHIBITED: Adding feature entrypoints, registration_files, reference_files, code_files, or test_files to macro nodes. Read these only from the selected feature micrograph.
  • Purpose: macro graph routing for orchestrator without scanning individual code files.

Step 10 — Sync docs/README.md index

  • REQUIRED: After updating docs/.graph.json (Step 9), reconcile docs/README.md's index table against nodes[]: add a row for every node without one, remove rows whose file no longer exists, update descriptions that drifted.
  • REQUIRED: Treat docs/.graph.json nodes[] as the source of truth for which documents exist; docs/README.md adds the human-facing layer (Mandatory/Optional, 1–2 sentence description) on top of those same nodes.
  • Follow ./references/README-RULES.md structure and prohibitions exactly — do not skip this step even when the user's request only targeted one specific document.
  • Purpose: prevents docs/README.md from drifting out of sync while docs/.digest.md/docs/.graph.json are kept current every invocation.
  • Final validation: confirm docs/.digest.md is under 60 lines and 3000 characters, contains only relative plain-text paths, and lists only baseline docs plus the .graph.json pointer. Confirm .graph.json topology resolves and docs/README.md matches its nodes.
  • Deliver only the concise Step 7 summary and changed file paths. Do not repeat full document contents unless the user asks.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.