@yottagraph-app/aether-instructions 1.1.44 → 1.1.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +16 -12
- package/README.md +13 -8
- package/commands/build_my_app.md +9 -9
- package/commands/deploy_mcp.md +3 -3
- package/commands/update_instructions.md +105 -53
- package/package.json +1 -1
- package/skills/aether/SKILL.md +1 -1
- package/skills/aether/cursor-cloud.md +1 -1
- package/skills/aether/data.md +4 -4
- package/skills/aether/instructions_warning.md +9 -6
- package/skills/aether/mcp-servers.md +1 -1
- package/variants/mcp-only/commands/build_my_app.md +5 -5
package/AGENTS.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Aether
|
|
2
2
|
|
|
3
|
-
**Read first:** [`.
|
|
3
|
+
**Read first:** [`.agents/skills/aether/SKILL.md`](.agents/skills/aether/SKILL.md) — the Aether skill indexes every topic below and is the canonical entry point for any work in this repo.
|
|
4
4
|
|
|
5
5
|
**Stack:** Nuxt 3 (SPA), Vue 3 Composition API (`<script setup>`), Vuetify 3, TypeScript (required), Auth0.
|
|
6
6
|
|
|
7
7
|
**Structure:** `pages/` (file-based routing), `components/`, `composables/`, `server/api/`, `agents/` (Python ADK), `mcp-servers/` (Python FastMCP).
|
|
8
8
|
|
|
9
|
-
**Data:** This app runs on the Lovelace platform -- entities, news, filings, sentiment, relationships, events. See [`data.md`](.
|
|
9
|
+
**Data:** This app runs on the Lovelace platform -- entities, news, filings, sentiment, relationships, events. See [`data.md`](.agents/skills/aether/data.md) in the `aether` skill for access patterns and gotchas. Additional skill docs: `.agents/skills/data-model/` (entity types, properties, relationships; `SKILL.md` first), `.agents/skills/elemental-mcp-patterns/` (MCP response shapes, property type handling, Python patterns for agent tools). Do NOT call external APIs for data the platform provides.
|
|
10
10
|
|
|
11
|
-
**Storage:** KV (Upstash Redis) for preferences and lightweight state via `Pref<T>` from `usePrefsStore()`. Neon Postgres for relational data if connected (see [`storage.md`](.
|
|
11
|
+
**Storage:** KV (Upstash Redis) for preferences and lightweight state via `Pref<T>` from `usePrefsStore()`. Neon Postgres for relational data if connected (see [`storage.md`](.agents/skills/aether/storage.md) in the `aether` skill).
|
|
12
12
|
|
|
13
13
|
**Source of truth:** `DESIGN.md` -- read before starting work, update when changing features. The starter UI is placeholder -- replace freely. Feature docs in `design/` for implementation planning.
|
|
14
14
|
|
|
@@ -18,24 +18,28 @@
|
|
|
18
18
|
|
|
19
19
|
## Task-specific topics
|
|
20
20
|
|
|
21
|
-
The `aether` skill (`.
|
|
21
|
+
The `aether` skill (`.agents/skills/aether/SKILL.md`) covers architecture, data, UI cookbook, agents, MCP servers, deployment, env, storage, troubleshooting, and more. Read `SKILL.md` first; it's a short index that points you to the specific topic file you need.
|
|
22
22
|
|
|
23
23
|
## Environment
|
|
24
24
|
|
|
25
25
|
Detect your runtime once at startup, then read the matching topic in the `aether` skill:
|
|
26
26
|
|
|
27
|
-
- **Cursor Cloud** if `$HOME` starts with `/root` or `/home/ubuntu`, OR `uname -s` reports `Linux` in a container-shaped path, OR a "Dev Server" terminal was auto-started from `.
|
|
28
|
-
- **Local dev** if `$HOME` is under `/Users/…` (macOS) or a normal Linux/Windows user home, and no "Dev Server" terminal is auto-running. → If `.env` and `node_modules/` are present, you're set up; otherwise read [`local-setup.md`](.
|
|
27
|
+
- **Cursor Cloud** if `$HOME` starts with `/root` or `/home/ubuntu`, OR `uname -s` reports `Linux` in a container-shaped path, OR a "Dev Server" terminal was auto-started from `.agents/environment.json`. → Read [`cursor-cloud.md`](.agents/skills/aether/cursor-cloud.md).
|
|
28
|
+
- **Local dev** if `$HOME` is under `/Users/…` (macOS) or a normal Linux/Windows user home, and no "Dev Server" terminal is auto-running. → If `.env` and `node_modules/` are present, you're set up; otherwise read [`local-setup.md`](.agents/skills/aether/local-setup.md).
|
|
29
29
|
|
|
30
30
|
This check is cheap and only needs to run once per session.
|
|
31
31
|
|
|
32
|
-
###
|
|
32
|
+
### Agent instructions (`.agents/`)
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
`@yottagraph-app/aether-instructions` npm package during project init
|
|
36
|
-
`.cursor
|
|
37
|
-
`.
|
|
38
|
-
|
|
34
|
+
Agent commands and skills are installed from the
|
|
35
|
+
`@yottagraph-app/aether-instructions` npm package during project init, under
|
|
36
|
+
`.agents/`. `.cursor` and `.claude` are symlinks to `.agents/`, and
|
|
37
|
+
`.mcp.json` is a symlink to `.agents/mcp.json`, so Cursor and Claude Code
|
|
38
|
+
both read the same files.
|
|
39
|
+
|
|
40
|
+
`.agents/skills/aether/` is the main Aether skill.
|
|
41
|
+
`.agents/skills/elemental-api/` contains API skill documentation (endpoint
|
|
42
|
+
reference, types, usage patterns). `.agents/skills/data-model/` contains
|
|
39
43
|
Lovelace data model documentation (entity types, schemas per fetch source).
|
|
40
44
|
If these directories are missing, run `/update_instructions` to reinstall.
|
|
41
45
|
|
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# @yottagraph-app/aether-instructions
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Agent commands and skills for Aether development (used by Cursor and
|
|
4
|
+
Claude Code).
|
|
4
5
|
|
|
5
6
|
The core Aether guidance (architecture, data, UI, agents, MCP servers,
|
|
6
7
|
deployment, etc.) ships as the **`aether` skill** under `skills/aether/`,
|
|
@@ -11,6 +12,10 @@ with a `SKILL.md` entry point that indexes the topic files.
|
|
|
11
12
|
This package is automatically downloaded and extracted during Aether project
|
|
12
13
|
initialization (`init-project.js`). You don't need to install it directly.
|
|
13
14
|
|
|
15
|
+
Files install under `.agents/`. `.cursor` and `.claude` are whole-directory
|
|
16
|
+
symlinks to `.agents/`, and `.mcp.json` at the repo root is a symlink to
|
|
17
|
+
`.agents/mcp.json`, so Cursor and Claude Code read the same files.
|
|
18
|
+
|
|
14
19
|
### Updating Instructions
|
|
15
20
|
|
|
16
21
|
To update to the latest version:
|
|
@@ -19,20 +24,20 @@ To update to the latest version:
|
|
|
19
24
|
/update_instructions
|
|
20
25
|
```
|
|
21
26
|
|
|
22
|
-
This
|
|
27
|
+
This command will:
|
|
23
28
|
|
|
24
29
|
1. Download the latest version of this package
|
|
25
|
-
2. Replace files in `.
|
|
26
|
-
3. Remove the deprecated `.
|
|
30
|
+
2. Replace files in `.agents/` that are listed in `.agents/.aether-instructions-manifest`
|
|
31
|
+
3. Remove the deprecated `.agents/rules/` directory if present (rules were replaced by the `aether` skill)
|
|
27
32
|
4. Extract fresh files from the package
|
|
28
33
|
5. Commit the changes
|
|
29
34
|
|
|
30
35
|
### File Naming Convention
|
|
31
36
|
|
|
32
|
-
Package files keep their original names under `.
|
|
33
|
-
`.
|
|
34
|
-
`.
|
|
35
|
-
update; other files under `.
|
|
37
|
+
Package files keep their original names under `.agents/commands/` and
|
|
38
|
+
`.agents/skills/`. Which paths are owned by the package is recorded in
|
|
39
|
+
`.agents/.aether-instructions-manifest`. Only those paths are overwritten on
|
|
40
|
+
update; other files under `.agents/` are not touched by the updater.
|
|
36
41
|
|
|
37
42
|
### Customizing Commands or Skill Topics
|
|
38
43
|
|
package/commands/build_my_app.md
CHANGED
|
@@ -48,7 +48,7 @@ If design reference images exist (screenshots from Figma or other design tools):
|
|
|
48
48
|
|
|
49
49
|
1. **Examine each image** -- these are design mockups from the project creator showing what the app should look like.
|
|
50
50
|
2. Describe what you see in each image: layout structure, navigation patterns, component types, color usage, typography.
|
|
51
|
-
3. Map visual elements to **Vuetify components** (cards = `v-card`, data tables = `v-data-table`, navigation drawers = `v-navigation-drawer`, app bars = `v-app-bar`, etc.). If a `vuetify-figma` skill is available in `.
|
|
51
|
+
3. Map visual elements to **Vuetify components** (cards = `v-card`, data tables = `v-data-table`, navigation drawers = `v-navigation-drawer`, app bars = `v-app-bar`, etc.). If a `vuetify-figma` skill is available in `.agents/skills/`, read it for detailed component mapping guidance.
|
|
52
52
|
4. Use the design references alongside the Vision text to plan the UX. The images show _what it should look like_; the Vision text explains _what it should do_.
|
|
53
53
|
|
|
54
54
|
If a Figma URL is referenced in DESIGN.md, note it for the user but don't attempt to fetch it -- work from the uploaded screenshots and the text brief.
|
|
@@ -64,15 +64,15 @@ tools like `elemental_get_schema`, `elemental_get_entity`, etc.
|
|
|
64
64
|
tools (entity search, market data, news, etc.) that you can use during
|
|
65
65
|
development.
|
|
66
66
|
|
|
67
|
-
**If MCP tools are NOT available:** Check if `.
|
|
67
|
+
**If MCP tools are NOT available:** Check if `.agents/mcp.json` exists:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
cat .
|
|
70
|
+
cat .agents/mcp.json 2>/dev/null
|
|
71
71
|
```
|
|
72
72
|
|
|
73
73
|
If the file exists but tools aren't showing, they may need to be enabled:
|
|
74
74
|
|
|
75
|
-
> Your project has Lovelace MCP servers configured (`.
|
|
75
|
+
> Your project has Lovelace MCP servers configured (`.agents/mcp.json`),
|
|
76
76
|
> but they don't appear to be active yet. Cursor disables new MCP servers
|
|
77
77
|
> by default.
|
|
78
78
|
>
|
|
@@ -95,17 +95,17 @@ First, ensure dependencies are installed (types aren't available without this):
|
|
|
95
95
|
test -d node_modules || npm install
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
Skills in `.
|
|
98
|
+
Skills in `.agents/skills/` are populated during project init (`node init-project.js`).
|
|
99
99
|
If that directory is empty after `npm install`, run `node init-project.js` to install them.
|
|
100
100
|
|
|
101
101
|
Then read these files to understand what's available:
|
|
102
102
|
|
|
103
103
|
1. `DESIGN.md` -- project vision and current status
|
|
104
104
|
2. `broadchurch.yaml` -- project config (name, gateway URL, etc.)
|
|
105
|
-
3. **The `aether` skill's `data.md` topic** (`.
|
|
106
|
-
4. **`.
|
|
105
|
+
3. **The `aether` skill's `data.md` topic** (`.agents/skills/aether/data.md`) — this is critical. It describes the Query Server, the platform's primary data source. Build against platform APIs, not external sources.
|
|
106
|
+
4. **`.agents/skills/`** — Each subdirectory is one skill. Start with `.agents/skills/aether/SKILL.md` — it's the index for every Aether topic (architecture, data, UI, agents, MCP, deployment, etc.). Then open each other skill's entry (usually `SKILL.md`) and follow its structure to learn what is documented (APIs, schemas, helpers, etc.).
|
|
107
107
|
|
|
108
|
-
**Important: Use the platform's data.** This app runs on the Lovelace platform, which provides a Query Server with entities, news, filings, sentiment, relationships, events, and more. Read [`data.md`](../skills/aether/data.md) in the `aether` skill and the other skills under `.
|
|
108
|
+
**Important: Use the platform's data.** This app runs on the Lovelace platform, which provides a Query Server with entities, news, filings, sentiment, relationships, events, and more. Read [`data.md`](../skills/aether/data.md) in the `aether` skill and the other skills under `.agents/skills/` to understand what data is available. Use `getSchema()` to discover entity types and properties at runtime.
|
|
109
109
|
|
|
110
110
|
Key capabilities:
|
|
111
111
|
|
|
@@ -113,7 +113,7 @@ Key capabilities:
|
|
|
113
113
|
- **KV storage** -- always available for preferences and lightweight data (see [`pref.md`](../skills/aether/pref.md) in the `aether` skill)
|
|
114
114
|
- **Neon Postgres** -- may be available for relational data; see [`storage.md`](../skills/aether/storage.md) in the `aether` skill for how to check and how to use it
|
|
115
115
|
- **AI agent chat** -- use the `useAgentChat` composable to build a chat UI for deployed agents
|
|
116
|
-
- **MCP servers** -- Lovelace MCP servers may be available (check `.
|
|
116
|
+
- **MCP servers** -- Lovelace MCP servers may be available (check `.agents/mcp.json`)
|
|
117
117
|
- **Components** -- Vuetify 3 component library is available
|
|
118
118
|
|
|
119
119
|
---
|
package/commands/deploy_mcp.md
CHANGED
|
@@ -122,9 +122,9 @@ curl -sf -X POST "<GATEWAY_URL>/api/projects/<ORG_ID>/deploy" \
|
|
|
122
122
|
|
|
123
123
|
## Step 7: Register in Cursor MCP Config
|
|
124
124
|
|
|
125
|
-
After deployment completes, add the new server to `.
|
|
125
|
+
After deployment completes, add the new server to `.agents/mcp.json` so Cursor and Claude Code can connect to it through the Portal Gateway proxy.
|
|
126
126
|
|
|
127
|
-
Read `.
|
|
127
|
+
Read `.agents/mcp.json`, then add a new entry for the server:
|
|
128
128
|
|
|
129
129
|
```json
|
|
130
130
|
{
|
|
@@ -136,7 +136,7 @@ Read `.cursor/mcp.json`, then add a new entry for the server:
|
|
|
136
136
|
|
|
137
137
|
Where `<SERVER_NAME>`, `<GATEWAY_URL>`, and `<ORG_ID>` are the values from Steps 1-2.
|
|
138
138
|
|
|
139
|
-
Write the updated JSON back to `.
|
|
139
|
+
Write the updated JSON back to `.agents/mcp.json`.
|
|
140
140
|
|
|
141
141
|
> The MCP server is now registered. Cursor will connect to it through the Portal Gateway proxy — no credentials needed.
|
|
142
142
|
>
|
|
@@ -1,32 +1,73 @@
|
|
|
1
1
|
# Update Instructions
|
|
2
2
|
|
|
3
|
-
Update
|
|
3
|
+
Update agent commands and skills from the `@yottagraph-app/aether-instructions` npm package.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
7
|
-
This command downloads the latest instructions package and extracts it to
|
|
7
|
+
This command downloads the latest instructions package and extracts it to `.agents/`. A manifest file (`.agents/.aether-instructions-manifest`) tracks which files came from the package so updates only replace package-provided files.
|
|
8
|
+
|
|
9
|
+
`.cursor/` and `.claude/` are whole-directory symlinks to `.agents/`, and `.mcp.json` is a symlink to `.agents/mcp.json`. Cursor and Claude Code therefore both read the same files; in the repo itself every reference points at the real `.agents/` path.
|
|
8
10
|
|
|
9
11
|
**What happens:**
|
|
10
12
|
|
|
11
|
-
1.
|
|
12
|
-
2.
|
|
13
|
-
3.
|
|
14
|
-
4.
|
|
15
|
-
5.
|
|
16
|
-
6.
|
|
13
|
+
1. Ensures the `.agents/` layout exists (migrating a legacy `.cursor/` directory and creating the `.cursor`, `.claude`, `.mcp.json` symlinks as needed)
|
|
14
|
+
2. Downloads the latest `@yottagraph-app/aether-instructions` package
|
|
15
|
+
3. Deletes files listed in the existing manifest
|
|
16
|
+
4. Removes the deprecated `.agents/rules/` directory if present (rules were replaced by the `aether` skill)
|
|
17
|
+
5. Extracts fresh files from the package
|
|
18
|
+
6. Writes a new manifest
|
|
19
|
+
7. Commits the changes
|
|
17
20
|
|
|
18
|
-
**Your files are safe:** Only paths listed in the manifest are removed before reinstall. Other files under `.
|
|
21
|
+
**Your files are safe:** Only paths listed in the manifest are removed before reinstall. Other files under `.agents/` are left alone.
|
|
19
22
|
|
|
20
|
-
**Shell compatibility:** Run the bash snippets below with **`bash`**, not bare `zsh`. An **empty line** in the manifest can make `rm -rf ".
|
|
23
|
+
**Shell compatibility:** Run the bash snippets below with **`bash`**, not bare `zsh`. An **empty line** in the manifest can make `rm -rf ".agents/$rel"` delete **all of `.agents/`** — Step 5 skips blank lines to avoid that.
|
|
21
24
|
|
|
22
25
|
---
|
|
23
26
|
|
|
24
|
-
## Step 1:
|
|
27
|
+
## Step 1: Ensure `.agents/` Layout
|
|
28
|
+
|
|
29
|
+
Detect and perform any one-time migration from the legacy `.cursor/` directory, then make sure the `.cursor`, `.claude`, and `.mcp.json` symlinks exist.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Case 1: .cursor is already a symlink (previously migrated) — nothing to do here
|
|
33
|
+
if [ -L .cursor ]; then
|
|
34
|
+
:
|
|
35
|
+
# Case 2: Fresh install — create .agents/ and symlinks
|
|
36
|
+
elif [ ! -e .cursor ]; then
|
|
37
|
+
mkdir -p .agents
|
|
38
|
+
# Case 3: Legacy layout — migrate .cursor/ → .agents/
|
|
39
|
+
elif [ -d .cursor ]; then
|
|
40
|
+
# Collision guards
|
|
41
|
+
if [ -e .agents ] && [ ! -L .agents ]; then
|
|
42
|
+
echo "Error: both .cursor/ and .agents/ exist as real paths. Resolve manually, then re-run /update_instructions." >&2
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
if [ -d .claude ] && [ ! -L .claude ] && [ -n "$(ls -A .claude 2>/dev/null)" ]; then
|
|
46
|
+
echo "Error: .claude/ exists as a real directory with contents. Move or remove it, then re-run /update_instructions." >&2
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
mv .cursor .agents
|
|
50
|
+
echo "Migrated .cursor/ → .agents/"
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
# Create symlinks if absent
|
|
54
|
+
[ -e .cursor ] || ln -s .agents .cursor
|
|
55
|
+
[ -e .claude ] || ln -s .agents .claude
|
|
56
|
+
[ -e .mcp.json ] || ln -s .agents/mcp.json .mcp.json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Report to user:
|
|
60
|
+
|
|
61
|
+
> Layout ready: `.agents/` (canonical), with `.cursor`, `.claude`, and `.mcp.json` symlinks for tool compatibility.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Step 2: Check Current Version
|
|
25
66
|
|
|
26
67
|
Read the current installed version:
|
|
27
68
|
|
|
28
69
|
```bash
|
|
29
|
-
cat .
|
|
70
|
+
cat .agents/.aether-instructions-version 2>/dev/null || echo "Not installed"
|
|
30
71
|
```
|
|
31
72
|
|
|
32
73
|
Report to user:
|
|
@@ -35,7 +76,7 @@ Report to user:
|
|
|
35
76
|
|
|
36
77
|
---
|
|
37
78
|
|
|
38
|
-
## Step
|
|
79
|
+
## Step 3: Check Latest Version
|
|
39
80
|
|
|
40
81
|
Query npm for the latest version:
|
|
41
82
|
|
|
@@ -51,7 +92,7 @@ Compare with current:
|
|
|
51
92
|
|
|
52
93
|
---
|
|
53
94
|
|
|
54
|
-
## Step
|
|
95
|
+
## Step 4: Download Package
|
|
55
96
|
|
|
56
97
|
Create a temporary directory and download the package:
|
|
57
98
|
|
|
@@ -70,12 +111,12 @@ The extracted content is in `$TEMP_DIR/package/`.
|
|
|
70
111
|
|
|
71
112
|
---
|
|
72
113
|
|
|
73
|
-
## Step
|
|
114
|
+
## Step 5: Delete Previously Installed Files
|
|
74
115
|
|
|
75
|
-
Read the manifest and delete listed paths. **Skip blank lines** — an empty `rel` would run `rm -rf ".
|
|
116
|
+
Read the manifest and delete listed paths. **Skip blank lines** — an empty `rel` would run `rm -rf ".agents/"` and wipe the whole directory. Entries prefixed with `root/` point at files at the repo root (currently `AGENTS.md` and `CLAUDE.md`); only remove **regular files** there, never directories.
|
|
76
117
|
|
|
77
118
|
```bash
|
|
78
|
-
if [ -f .
|
|
119
|
+
if [ -f .agents/.aether-instructions-manifest ]; then
|
|
79
120
|
while IFS= read -r rel || [ -n "$rel" ]; do
|
|
80
121
|
[ -z "$rel" ] && continue
|
|
81
122
|
case "$rel" in
|
|
@@ -85,34 +126,34 @@ if [ -f .cursor/.aether-instructions-manifest ]; then
|
|
|
85
126
|
[ -f "$target" ] && rm -f "$target"
|
|
86
127
|
;;
|
|
87
128
|
*)
|
|
88
|
-
rm -rf ".
|
|
129
|
+
rm -rf ".agents/$rel"
|
|
89
130
|
;;
|
|
90
131
|
esac
|
|
91
|
-
done < .
|
|
132
|
+
done < .agents/.aether-instructions-manifest
|
|
92
133
|
fi
|
|
93
134
|
```
|
|
94
135
|
|
|
95
|
-
Also remove the deprecated `.
|
|
136
|
+
Also remove the deprecated `.agents/rules/` directory (superseded by the `aether` skill in `.agents/skills/aether/`):
|
|
96
137
|
|
|
97
138
|
```bash
|
|
98
|
-
rm -rf .
|
|
139
|
+
rm -rf .agents/rules
|
|
99
140
|
```
|
|
100
141
|
|
|
101
142
|
---
|
|
102
143
|
|
|
103
|
-
## Step
|
|
144
|
+
## Step 6: Copy New Files
|
|
104
145
|
|
|
105
146
|
Create directories if needed:
|
|
106
147
|
|
|
107
148
|
```bash
|
|
108
|
-
mkdir -p .
|
|
149
|
+
mkdir -p .agents/commands .agents/skills
|
|
109
150
|
```
|
|
110
151
|
|
|
111
152
|
Copy files from the extracted package:
|
|
112
153
|
|
|
113
154
|
```bash
|
|
114
|
-
cp "$TEMP_DIR/package/commands/"* .
|
|
115
|
-
cp -r "$TEMP_DIR/package/skills/"* .
|
|
155
|
+
cp "$TEMP_DIR/package/commands/"* .agents/commands/ 2>/dev/null || true
|
|
156
|
+
cp -r "$TEMP_DIR/package/skills/"* .agents/skills/ 2>/dev/null || true
|
|
116
157
|
```
|
|
117
158
|
|
|
118
159
|
Copy the root-level AGENTS.md and CLAUDE.md from the package to the tenant repo root, if the package ships them. `CLAUDE.md` is a one-line `@AGENTS.md` pointer so Claude Code imports the same instructions Cursor reads from `AGENTS.md`:
|
|
@@ -127,40 +168,40 @@ Copy the root-level AGENTS.md and CLAUDE.md from the package to the tenant repo
|
|
|
127
168
|
If this project uses **mcp-only** (or another non-default mode), re-apply the same overlay `init-project.js` uses. Read the saved mode:
|
|
128
169
|
|
|
129
170
|
```bash
|
|
130
|
-
MODE=$(tr -d '\n' < .
|
|
171
|
+
MODE=$(tr -d '\n' < .agents/.aether-data-mode 2>/dev/null || echo "api-mcp")
|
|
131
172
|
PKG="$TEMP_DIR/package"
|
|
132
173
|
if [ "$MODE" != "api-mcp" ] && [ -d "$PKG/variants/$MODE/commands" ]; then
|
|
133
|
-
cp "$PKG/variants/$MODE/commands/"* .
|
|
174
|
+
cp "$PKG/variants/$MODE/commands/"* .agents/commands/ 2>/dev/null || true
|
|
134
175
|
fi
|
|
135
176
|
if [ "$MODE" != "api-mcp" ] && [ -d "$PKG/variants/$MODE/skills" ]; then
|
|
136
177
|
# Overlay per-file so default skill topics survive
|
|
137
178
|
for src_dir in "$PKG/variants/$MODE/skills/"*/; do
|
|
138
179
|
[ -d "$src_dir" ] || continue
|
|
139
180
|
dir_name=$(basename "$src_dir")
|
|
140
|
-
mkdir -p ".
|
|
141
|
-
cp "$src_dir"* ".
|
|
181
|
+
mkdir -p ".agents/skills/$dir_name"
|
|
182
|
+
cp "$src_dir"* ".agents/skills/$dir_name/" 2>/dev/null || true
|
|
142
183
|
done
|
|
143
184
|
fi
|
|
144
185
|
if [ "$MODE" = "mcp-only" ]; then
|
|
145
|
-
rm -rf .
|
|
186
|
+
rm -rf .agents/skills/elemental-api
|
|
146
187
|
fi
|
|
147
188
|
```
|
|
148
189
|
|
|
149
|
-
If `.
|
|
190
|
+
If `.agents/.aether-data-mode` is missing, skip the overlay (defaults to **api-mcp**).
|
|
150
191
|
|
|
151
192
|
---
|
|
152
193
|
|
|
153
|
-
## Step
|
|
194
|
+
## Step 7: Write Manifest and Version Marker
|
|
154
195
|
|
|
155
|
-
Build a manifest of all installed files (one relative path per line). **Do not** build a string with a leading `\n` — that writes a blank first line and breaks Step
|
|
196
|
+
Build a manifest of all installed files (one relative path per line). **Do not** build a string with a leading `\n` — that writes a blank first line and breaks Step 5. Prefer one `echo` per line:
|
|
156
197
|
|
|
157
198
|
```bash
|
|
158
199
|
{
|
|
159
|
-
for f in .
|
|
160
|
-
for d in .
|
|
200
|
+
for f in .agents/commands/*.md; do [ -f "$f" ] && echo "commands/$(basename "$f")"; done
|
|
201
|
+
for d in .agents/skills/*/; do [ -d "$d" ] && echo "skills/$(basename "$d")"; done
|
|
161
202
|
[ -f "$TEMP_DIR/package/AGENTS.md" ] && [ -f ./AGENTS.md ] && echo "root/AGENTS.md"
|
|
162
203
|
[ -f "$TEMP_DIR/package/CLAUDE.md" ] && [ -f ./CLAUDE.md ] && echo "root/CLAUDE.md"
|
|
163
|
-
} > .
|
|
204
|
+
} > .agents/.aether-instructions-manifest
|
|
164
205
|
```
|
|
165
206
|
|
|
166
207
|
If the repo uses **bash** for this loop and a glob might match nothing, run `shopt -s nullglob` first so the loops don't treat `*.md` as a literal filename.
|
|
@@ -168,12 +209,12 @@ If the repo uses **bash** for this loop and a glob might match nothing, run `sho
|
|
|
168
209
|
Write the version marker:
|
|
169
210
|
|
|
170
211
|
```bash
|
|
171
|
-
grep -o '"version": *"[^"]*"' "$TEMP_DIR/package/package.json" | grep -o '[0-9][^"]*' > .
|
|
212
|
+
grep -o '"version": *"[^"]*"' "$TEMP_DIR/package/package.json" | grep -o '[0-9][^"]*' > .agents/.aether-instructions-version
|
|
172
213
|
```
|
|
173
214
|
|
|
174
215
|
---
|
|
175
216
|
|
|
176
|
-
## Step
|
|
217
|
+
## Step 8: Cleanup
|
|
177
218
|
|
|
178
219
|
Remove the temporary directory:
|
|
179
220
|
|
|
@@ -183,14 +224,14 @@ rm -rf "$TEMP_DIR"
|
|
|
183
224
|
|
|
184
225
|
---
|
|
185
226
|
|
|
186
|
-
## Step
|
|
227
|
+
## Step 9: Report Changes
|
|
187
228
|
|
|
188
229
|
Count what was installed:
|
|
189
230
|
|
|
190
231
|
```bash
|
|
191
|
-
wc -l < .
|
|
192
|
-
ls .
|
|
193
|
-
ls -d .
|
|
232
|
+
wc -l < .agents/.aether-instructions-manifest
|
|
233
|
+
ls .agents/commands/*.md 2>/dev/null | wc -l
|
|
234
|
+
ls -d .agents/skills/*/ 2>/dev/null | wc -l
|
|
194
235
|
```
|
|
195
236
|
|
|
196
237
|
Report to user:
|
|
@@ -202,17 +243,24 @@ Report to user:
|
|
|
202
243
|
|
|
203
244
|
---
|
|
204
245
|
|
|
205
|
-
## Step
|
|
246
|
+
## Step 10: Commit Changes
|
|
206
247
|
|
|
207
|
-
Commit the updated instruction files. A root `.gitignore` rule like `skills/` can **ignore** `.
|
|
248
|
+
Commit the updated instruction files and (on first migration) the new symlinks. A root `.gitignore` rule like `skills/` can **ignore** `.agents/skills/`; if `git add .agents/skills/` reports ignored paths, force-add:
|
|
208
249
|
|
|
209
250
|
```bash
|
|
210
|
-
git add .
|
|
211
|
-
git add -f .
|
|
251
|
+
git add .agents/commands/ .agents/.aether-instructions-version .agents/.aether-instructions-manifest
|
|
252
|
+
git add -f .agents/skills/
|
|
253
|
+
# Symlinks (no-ops if they were already tracked)
|
|
254
|
+
[ -L .cursor ] && git add .cursor
|
|
255
|
+
[ -L .claude ] && git add .claude
|
|
256
|
+
[ -L .mcp.json ] && git add .mcp.json
|
|
212
257
|
[ -f AGENTS.md ] && git add AGENTS.md
|
|
213
258
|
[ -f CLAUDE.md ] && git add CLAUDE.md
|
|
214
259
|
# Remove the legacy rules dir from tracking if it was committed in an earlier install
|
|
215
|
-
git rm -rf --cached --ignore-unmatch .
|
|
260
|
+
git rm -rf --cached --ignore-unmatch .agents/rules 2>/dev/null || true
|
|
261
|
+
# If we just migrated, drop the old .cursor/ path from tracking so git records the symlink instead of the directory
|
|
262
|
+
git rm -rf --cached --ignore-unmatch .cursor 2>/dev/null || true
|
|
263
|
+
[ -L .cursor ] && git add .cursor
|
|
216
264
|
git commit -m "Update instructions to vX.Y.Z"
|
|
217
265
|
```
|
|
218
266
|
|
|
@@ -234,7 +282,7 @@ If `npm pack` fails with a registry error:
|
|
|
234
282
|
|
|
235
283
|
If you get permission errors:
|
|
236
284
|
|
|
237
|
-
> Try running with appropriate permissions, or check that `.
|
|
285
|
+
> Try running with appropriate permissions, or check that `.agents/` is writable.
|
|
238
286
|
|
|
239
287
|
### Want to customize a command, skill topic, or AGENTS.md?
|
|
240
288
|
|
|
@@ -242,14 +290,18 @@ If you need to modify a package-provided file (including the root `AGENTS.md` or
|
|
|
242
290
|
|
|
243
291
|
1. Edit it directly — your changes will persist until the next update
|
|
244
292
|
2. To preserve changes across updates, copy it to a new name first (e.g. `cp AGENTS.md AGENTS.local.md`)
|
|
245
|
-
3. Remove the original's entry from `.
|
|
293
|
+
3. Remove the original's entry from `.agents/.aether-instructions-manifest` so it won't be deleted on update (for `AGENTS.md`, remove the `root/AGENTS.md` line; for `CLAUDE.md`, remove `root/CLAUDE.md`)
|
|
246
294
|
|
|
247
295
|
`CLAUDE.md` ships as a one-line `@AGENTS.md` pointer — Claude Code imports `AGENTS.md` via that syntax, so in most cases you only need to edit `AGENTS.md`.
|
|
248
296
|
|
|
249
|
-
### Blank line in manifest deleted `.
|
|
297
|
+
### Blank line in manifest deleted `.agents/`
|
|
298
|
+
|
|
299
|
+
Regenerate the manifest with Step 7 (echo-per-line form). Ensure Step 5 skips empty lines.
|
|
300
|
+
|
|
301
|
+
### `git add` says `.agents/skills` is ignored
|
|
250
302
|
|
|
251
|
-
|
|
303
|
+
Use `git add -f .agents/skills/` as in Step 10, or narrow `.gitignore` so `skills/` only ignores the project `skills/` folder (e.g. `/skills/` at repo root) instead of every `skills` path.
|
|
252
304
|
|
|
253
|
-
###
|
|
305
|
+
### Migration aborted (collision)
|
|
254
306
|
|
|
255
|
-
|
|
307
|
+
If Step 1 aborts because `.cursor/` and a real `.agents/` both exist, or `.claude/` has hand-written contents: decide which source is authoritative, back up the other, then re-run.
|
package/package.json
CHANGED
package/skills/aether/SKILL.md
CHANGED
|
@@ -54,4 +54,4 @@ topics that apply.
|
|
|
54
54
|
| [cursor-cloud.md](cursor-cloud.md) | Cursor Cloud environment quirks (Node managed by env, dev server auto-started, skip browser testing during initial setup). Read when `$HOME` is under `/root` or `/home/ubuntu`, or when a dev-server terminal was auto-started. |
|
|
55
55
|
| [git-support.md](git-support.md) | Git commit workflow and conventions. Read when finishing implementation work, making commits, or troubleshooting git/pre-commit failures. |
|
|
56
56
|
| [something-broke.md](something-broke.md) | Error recovery and build failure troubleshooting. Read when something broke, build failed, `npm run build` errors, or the user wants to restore previous behavior. |
|
|
57
|
-
| [instructions_warning.md](instructions_warning.md) | Warning about editing `.
|
|
57
|
+
| [instructions_warning.md](instructions_warning.md) | Warning about editing `.agents/` files managed by `@yottagraph-app/aether-instructions`. Read before modifying installed instruction files. |
|
|
@@ -35,7 +35,7 @@ Lovelace MCP servers (`lovelace-elemental`, `lovelace-stocks`, etc.)
|
|
|
35
35
|
should be available if configured at the org level. Check your tool list
|
|
36
36
|
for `elemental_*` tools. If they're not available, use the Elemental API
|
|
37
37
|
client (`useElementalClient()`) and the skill docs in
|
|
38
|
-
`.
|
|
38
|
+
`.agents/skills/elemental-api/` and `.agents/skills/data-model/` for platform data access instead.
|
|
39
39
|
|
|
40
40
|
### Technical details
|
|
41
41
|
|
package/skills/aether/data.md
CHANGED
|
@@ -13,14 +13,14 @@ regularly — use the discovery-first pattern to find what's available.
|
|
|
13
13
|
## Skill Documentation
|
|
14
14
|
|
|
15
15
|
For endpoint reference, response shapes, and edge cases, **read the
|
|
16
|
-
elemental-api skill** in `.
|
|
16
|
+
elemental-api skill** in `.agents/skills/elemental-api/` (start with `SKILL.md` and
|
|
17
17
|
follow the skill’s own structure). Files are copied from
|
|
18
18
|
`@yottagraph-app/aether-instructions` (installed during project init). If
|
|
19
19
|
the directory is missing, run `/update_instructions` to install it.
|
|
20
20
|
|
|
21
21
|
## Data model skill
|
|
22
22
|
|
|
23
|
-
For Lovelace **entity types, properties, relationships, and per-source schemas** (EDGAR, FRED, FDIC, etc.), read the **data-model skill** in `.
|
|
23
|
+
For Lovelace **entity types, properties, relationships, and per-source schemas** (EDGAR, FRED, FDIC, etc.), read the **data-model skill** in `.agents/skills/data-model/`. Start with `SKILL.md`, then `overview.md` and the source-specific folders. Both skills are distributed via `@yottagraph-app/aether-instructions` and installed during project init.
|
|
24
24
|
|
|
25
25
|
## Test Before You Build
|
|
26
26
|
|
|
@@ -494,7 +494,7 @@ if (response.status === 404) {
|
|
|
494
494
|
|
|
495
495
|
## Lovelace MCP Servers
|
|
496
496
|
|
|
497
|
-
Four MCP servers may be configured in `.
|
|
497
|
+
Four MCP servers may be configured in `.agents/mcp.json` for interactive
|
|
498
498
|
data exploration. **Check your tool list** — if tools like
|
|
499
499
|
`elemental_get_schema` appear, use them as your primary testing and
|
|
500
500
|
exploration interface before writing code. If they don't appear, the
|
|
@@ -526,7 +526,7 @@ building REST-based features with `useElementalClient()`.
|
|
|
526
526
|
|
|
527
527
|
### Setup
|
|
528
528
|
|
|
529
|
-
`.
|
|
529
|
+
`.agents/mcp.json` is auto-generated by `init-project.js`. If it's missing,
|
|
530
530
|
run `node init-project.js --local` to regenerate it. For provisioned projects,
|
|
531
531
|
the servers route through the Portal Gateway proxy (no credentials needed).
|
|
532
532
|
For local development without a gateway, the servers require an
|
|
@@ -2,13 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
**You are editing a file managed by the `@yottagraph-app/aether-instructions` package.**
|
|
4
4
|
|
|
5
|
-
Package-managed files are tracked by `.
|
|
5
|
+
Package-managed files are tracked by `.agents/.aether-instructions-manifest`.
|
|
6
6
|
They will be **overwritten** when you run `/update_instructions`.
|
|
7
7
|
|
|
8
|
-
This includes files under `.
|
|
8
|
+
This includes files under `.agents/commands/`, `.agents/skills/`, **and the
|
|
9
9
|
root `AGENTS.md` and `CLAUDE.md`** (tracked as `root/AGENTS.md` and
|
|
10
10
|
`root/CLAUDE.md` in the manifest).
|
|
11
11
|
|
|
12
|
+
`.cursor`, `.claude`, and `.mcp.json` are symlinks into `.agents/`, so any
|
|
13
|
+
path you see under those resolves to the same managed file.
|
|
14
|
+
|
|
12
15
|
## Do Not
|
|
13
16
|
|
|
14
17
|
- Modify files listed in the manifest directly (changes will be lost on update)
|
|
@@ -19,19 +22,19 @@ If you need to modify a package-provided command, skill topic, or the root `AGEN
|
|
|
19
22
|
|
|
20
23
|
1. **Copy** the file to a new name
|
|
21
24
|
2. Make your changes to the copy
|
|
22
|
-
3. Remove the original's entry from `.
|
|
25
|
+
3. Remove the original's entry from `.agents/.aether-instructions-manifest`
|
|
23
26
|
so it won't be replaced on update
|
|
24
27
|
|
|
25
28
|
Examples:
|
|
26
29
|
|
|
27
30
|
```bash
|
|
28
31
|
# Customize a skill topic
|
|
29
|
-
cp .
|
|
32
|
+
cp .agents/skills/aether/data.md .agents/skills/aether/data_custom.md
|
|
30
33
|
|
|
31
34
|
# Customize AGENTS.md
|
|
32
35
|
cp AGENTS.md AGENTS.local.md
|
|
33
36
|
# then remove the `root/AGENTS.md` line from
|
|
34
|
-
# .
|
|
37
|
+
# .agents/.aether-instructions-manifest
|
|
35
38
|
|
|
36
39
|
# Customize CLAUDE.md
|
|
37
40
|
cp CLAUDE.md CLAUDE.local.md
|
|
@@ -42,7 +45,7 @@ cp CLAUDE.md CLAUDE.local.md
|
|
|
42
45
|
|
|
43
46
|
## How It Works
|
|
44
47
|
|
|
45
|
-
- `.
|
|
48
|
+
- `.agents/.aether-instructions-manifest` lists every file installed by the
|
|
46
49
|
package (one relative path per line, e.g. `skills/aether/data.md`). Entries
|
|
47
50
|
prefixed with `root/` refer to files at the tenant repo root
|
|
48
51
|
(currently `root/AGENTS.md` and `root/CLAUDE.md`).
|
|
@@ -88,7 +88,7 @@ Deploy with the `/deploy_mcp` Cursor command. This will:
|
|
|
88
88
|
2. Deploy to Cloud Run with IAM authentication
|
|
89
89
|
3. Grant invoker permissions to tenant and Portal service accounts
|
|
90
90
|
4. Register the server in Firestore (via the Portal API)
|
|
91
|
-
5. Add the server to `.
|
|
91
|
+
5. Add the server to `.agents/mcp.json` for agent access (Cursor and Claude Code)
|
|
92
92
|
|
|
93
93
|
## Connecting MCP Servers to Agents
|
|
94
94
|
|
|
@@ -55,7 +55,7 @@ If design reference images exist (screenshots from Figma or other design tools):
|
|
|
55
55
|
|
|
56
56
|
1. **Examine each image** — these are design mockups from the project creator showing what the app should look like.
|
|
57
57
|
2. Describe what you see in each image: layout structure, navigation patterns, component types, color usage, typography.
|
|
58
|
-
3. Map visual elements to **Vuetify components** (cards = `v-card`, data tables = `v-data-table`, navigation drawers = `v-navigation-drawer`, app bars = `v-app-bar`, etc.). If a `vuetify-figma` skill is available in `.
|
|
58
|
+
3. Map visual elements to **Vuetify components** (cards = `v-card`, data tables = `v-data-table`, navigation drawers = `v-navigation-drawer`, app bars = `v-app-bar`, etc.). If a `vuetify-figma` skill is available in `.agents/skills/`, read it for detailed component mapping guidance.
|
|
59
59
|
4. Use the design references alongside the Vision text to plan the UX. The images show _what it should look like_; the Vision text explains _what it should do_.
|
|
60
60
|
|
|
61
61
|
If a Figma URL is referenced in DESIGN.md, note it for the user but don't attempt to fetch it — work from the uploaded screenshots and the text brief.
|
|
@@ -66,15 +66,15 @@ If a Figma URL is referenced in DESIGN.md, note it for the user but don't attemp
|
|
|
66
66
|
|
|
67
67
|
Check if Lovelace MCP tools are available (e.g. `elemental_get_schema`, `elemental_get_entity`). Use them while **authoring agents** and validating graph behavior.
|
|
68
68
|
|
|
69
|
-
**If MCP tools are NOT available**, check `.
|
|
69
|
+
**If MCP tools are NOT available**, check `.agents/mcp.json`:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
cat .
|
|
72
|
+
cat .agents/mcp.json 2>/dev/null
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
If the file exists but tools aren't active yet:
|
|
76
76
|
|
|
77
|
-
> Your project has Lovelace MCP servers configured (`.
|
|
77
|
+
> Your project has Lovelace MCP servers configured (`.agents/mcp.json`), but they don't appear to be active yet. Cursor disables new MCP servers by default.
|
|
78
78
|
>
|
|
79
79
|
> Open **Cursor Settings** (Cmd+Shift+J on macOS) → **Tools & MCP** and enable the `lovelace-*` servers listed there. They should show green toggles when active. Let me know when they're enabled (or if you'd like to skip this).
|
|
80
80
|
|
|
@@ -86,7 +86,7 @@ The **Nuxt** layer may combine **your APIs** (often Postgres-backed), **chat** v
|
|
|
86
86
|
|
|
87
87
|
## Step 3: Understand the Environment
|
|
88
88
|
|
|
89
|
-
Run `npm install` / `node init-project.js` as needed so `.
|
|
89
|
+
Run `npm install` / `node init-project.js` as needed so `.agents/skills/` includes **`data-model`** (no `elemental-api` skill in this mode).
|
|
90
90
|
|
|
91
91
|
Read:
|
|
92
92
|
|