Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 21 additions & 21 deletions prpm.json
Original file line number Diff line number Diff line change
Expand Up @@ -124,25 +124,6 @@
"skills/relay-80-100-workflow/SKILL.md"
]
},
{
"name": "review-fix-signoff-loop",
"version": "1.0.2",
"description": "Use when writing Agent Relay or Ricky workflows that must loop review, fix, and validation with fresh agent context until independent signoff agents both agree the work is comprehensively complete",
"format": "claude",
"subtype": "skill",
"tags": [
"workflow",
"review-loop",
"signoff",
"fresh-context",
"quality-assurance",
"multi-agent",
"pr-comments"
],
"files": [
"skills/review-fix-signoff-loop/SKILL.md"
]
},
{
"name": "activity-summary",
"version": "1.0.0",
Expand Down Expand Up @@ -180,7 +161,7 @@
{
"name": "writeback-as-files",
"version": "1.0.0",
"description": "Use when an agent needs to write back to a provider (create a Linear comment, open a GitHub issue, post a Slack message, edit a Notion page, etc.) through a relayfile mount. Covers the file-creation writeback contract (drop a JSON file at the canonical path -> provider mutation), discovering paths and schemas via `.schema.json` siblings, idempotency keys, watching status with `relayfile writeback list`/`status`, and recovering dead-lettered writes under `.relay/dead-letter/`.",
"description": "Use when an agent needs to write back to a provider (create a Linear comment, open a GitHub issue, post a Slack message, edit a Notion page, etc.) through a relayfile mount. Covers the file-creation writeback contract (drop a JSON file at the canonical path provider mutation), discovering the right path and schema via `.schema.json` siblings, idempotency keys, watching writeback status with `relayfile writeback list` and `relayfile status`, and recovering from dead-lettered writes under `.relay/dead-letter/`.",
"format": "claude",
"subtype": "skill",
"tags": [
Expand All @@ -197,7 +178,7 @@
{
"name": "workspace-layout",
"version": "1.0.0",
"description": "Use when an agent is exploring a relayfile mount for the first time or trying to locate a specific resource (Notion page, Linear issue, Slack channel, GitHub PR). Tells the agent to start with `<mount>/LAYOUT.md` and `<provider>/LAYOUT.md` rather than guessing paths from memory, and to use the `by-title/`, `by-id/`, `by-name/`, `by-edited/<date>/`, `by-state/` alias subtrees instead of recursively grepping. Filename convention is `<identifier>__<uuid>`.",
"description": "Use when an agent is exploring a relayfile mount for the first time or trying to locate a specific resource (Notion page, Linear issue, Slack channel, GitHub PR). Tells the agent to start with `<mount>/LAYOUT.md` and `<provider>/.layout.md` rather than guessing paths from memory, and to use the `by-title/`, `by-id/`, `by-name/`, `by-edited/<date>/`, `by-state/` alias subtrees instead of recursively grepping. Filename convention is `<identifier>__<uuid>`.",
"format": "claude",
"subtype": "skill",
"tags": [
Expand All @@ -211,6 +192,25 @@
"skills/workspace-layout/SKILL.md"
]
},
{
"name": "review-fix-signoff-loop",
"version": "1.0.2",
"description": "Use when writing Agent Relay or Ricky workflows that must loop review, fix, and validation with fresh agent context until independent signoff agents both agree the work is comprehensively complete",
"format": "claude",
"subtype": "skill",
"tags": [
"workflow",
"review-loop",
"signoff",
"fresh-context",
"quality-assurance",
"multi-agent",
"pr-comments"
],
"files": [
"skills/review-fix-signoff-loop/SKILL.md"
]
},
{
"name": "create-workflow",
"version": "1.0.3",
Expand Down
15 changes: 8 additions & 7 deletions skills/workspace-layout/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
name: workspace-layout
description: Use when an agent is exploring a relayfile mount for the first time or trying to locate a specific resource (Notion page, Linear issue, Slack channel, GitHub PR). Tells the agent to start with `<mount>/LAYOUT.md` and `<provider>/LAYOUT.md` rather than guessing paths from memory, and to use the `by-title/`, `by-id/`, `by-name/`, `by-edited/<date>/`, `by-state/` alias subtrees instead of recursively grepping. Filename convention is `<identifier>__<uuid>` (ticket number / slug first so listings are scannable). NOT for activity-summary questions, which should use the `activity-summary` skill instead.
description: Use when an agent is exploring a relayfile mount for the first time or trying to locate a specific resource (Notion page, Linear issue, Slack channel, GitHub PR). Tells the agent to start with `<mount>/LAYOUT.md` and `<provider>/.layout.md` rather than guessing paths from memory, and to use the `by-title/`, `by-id/`, `by-name/`, `by-edited/<date>/`, `by-state/` alias subtrees instead of recursively grepping. Filename convention is `<identifier>__<uuid>` (ticket number / slug first so listings are scannable). NOT for activity-summary questions, which should use the `activity-summary` skill instead.
---

# Workspace Layout — Start With LAYOUT.md

## Overview

A relayfile mount is **self-describing**. Every workspace has a `LAYOUT.md` at its root, and every provider has a `LAYOUT.md` at its provider root, that together describe the directory shape, the filename conventions, and the indexes available for fast lookup. Read these first. Do not guess paths from memory — provider layouts can be customized per workspace and the indexes available may differ.
A relayfile mount is **self-describing**. Every workspace has a `LAYOUT.md` at its root, and every provider has a `.layout.md` at its provider root, that together describe the directory shape, the filename conventions, and the indexes available for fast lookup. Read these first. Do not guess paths from memory — provider layouts can be customized per workspace and the indexes available may differ.

## When to use this skill

Expand All @@ -29,7 +29,7 @@ The root `LAYOUT.md` lists the connected providers, the digests directory, the s
## Step 2: Read the provider layout

```bash
$ cat $MOUNT/linear/LAYOUT.md
$ cat $MOUNT/linear/.layout.md
```

The per-provider layout covers:
Expand Down Expand Up @@ -86,9 +86,9 @@ We borrowed the `<identifier>__<uuid>` shape from [Mirage](https://github.com/st
### "Where does X live?"

```bash
cat $MOUNT/LAYOUT.md # provider list and cross-cutting layout
cat $MOUNT/<provider>/LAYOUT.md # provider-specific shape
ls $MOUNT/<provider>/ # top-level resource directories
cat $MOUNT/LAYOUT.md # provider list and cross-cutting layout
cat $MOUNT/<provider>/.layout.md # provider-specific shape
ls $MOUNT/<provider>/ # top-level resource directories
ls $MOUNT/<provider>/<resource>/by-*/ # available indexes
```

Expand All @@ -113,4 +113,5 @@ Use `by-title/` or `by-name/` rather than `find`. The index is sorted and bounde

- **Don't `grep -r` over the mount** for a title or name. There's an index. Use it.
- **Don't hardcode paths from a different workspace's LAYOUT.md.** Workspaces can customize which adapters and indexes are mounted.
- **Don't ignore provider `LAYOUT.md`.** If you wrote a Notion-specific path from memory and it doesn't exist, the provider's `LAYOUT.md` will tell you the actual shape in one read.
<<<<<<< HEAD
- **Don't ignore `.layout.md`.** If you wrote a Notion-specific path from memory and it doesn't exist, the provider's `.layout.md` will tell you the actual shape in one read.