agentlink-sh 0.31.0 → 0.32.0
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/README.md +2 -2
- package/dist/index.js +18 -18
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -377,7 +377,7 @@ The scaffold runs a multi-step process:
|
|
|
377
377
|
7. **Verify setup** — Runs verification queries to confirm all components
|
|
378
378
|
8. **Setup frontend** — Writes React + Vite or NextJS files (if selected)
|
|
379
379
|
9. **Install frontend deps** — Runs `npm install` for the frontend
|
|
380
|
-
10. **Configure Claude Code** — Sets up `
|
|
380
|
+
10. **Configure Claude Code** — Sets up `AGENTS.md` and Claude settings
|
|
381
381
|
11. **Install MCP** — Installs Supabase MCP server (local mode only)
|
|
382
382
|
12. **Install plugin** — Installs Agent Link plugin and companion skills
|
|
383
383
|
13. **Finalize** — Creates git repo, writes `agentlink.json` manifest
|
|
@@ -425,7 +425,7 @@ The CLI installs all recommended companion skills for Claude Code automatically.
|
|
|
425
425
|
```
|
|
426
426
|
my-app/
|
|
427
427
|
├── agentlink.json # Project manifest
|
|
428
|
-
├──
|
|
428
|
+
├── AGENTS.md # AI agent instructions
|
|
429
429
|
├── .env.local # Environment variables
|
|
430
430
|
├── .env.example
|
|
431
431
|
├── .claude/
|
package/dist/index.js
CHANGED
|
@@ -6494,7 +6494,7 @@ async function countTargetUserTables(projectRef) {
|
|
|
6494
6494
|
}
|
|
6495
6495
|
}
|
|
6496
6496
|
|
|
6497
|
-
// src/
|
|
6497
|
+
// src/agents-md.ts
|
|
6498
6498
|
import fs8 from "fs";
|
|
6499
6499
|
import path8 from "path";
|
|
6500
6500
|
var MARKER_START = "<!-- agentlink:config:start -->";
|
|
@@ -6610,8 +6610,8 @@ Run \`supabase status\` to get the local API URL, DB URL, publishable key, and s
|
|
|
6610
6610
|
return `${MARKER_START}
|
|
6611
6611
|
${content}${MARKER_END}`;
|
|
6612
6612
|
}
|
|
6613
|
-
function
|
|
6614
|
-
const filePath = path8.join(options.projectDir, "
|
|
6613
|
+
function writeAgentsMd(options) {
|
|
6614
|
+
const filePath = path8.join(options.projectDir, "AGENTS.md");
|
|
6615
6615
|
const section = generateSection(options);
|
|
6616
6616
|
if (!fs8.existsSync(filePath)) {
|
|
6617
6617
|
fs8.writeFileSync(filePath, section + "\n");
|
|
@@ -6796,7 +6796,7 @@ function writeBareManifest(cwd) {
|
|
|
6796
6796
|
// `mode: "bare"` is diagnostic only — `setDefaultEnvironment` in
|
|
6797
6797
|
// manifest.ts will overwrite it to "cloud" on the first `env add dev`.
|
|
6798
6798
|
// The DURABLE flag is `bare: true` below: it's orthogonal to mode and
|
|
6799
|
-
// survives every env mutation, so downstream checks (
|
|
6799
|
+
// survives every env mutation, so downstream checks (AGENTS.md guards,
|
|
6800
6800
|
// envDeploy sequence) can reliably detect "this project isn't
|
|
6801
6801
|
// scaffolded" regardless of what `mode` says right now.
|
|
6802
6802
|
mode: "bare",
|
|
@@ -7017,14 +7017,14 @@ async function envAdd(name, cwd, opts = {}) {
|
|
|
7017
7017
|
setDefaultEnvironment(cwd, name);
|
|
7018
7018
|
console.log(` ${blue("\u2714")} Default environment set to "${name}"`);
|
|
7019
7019
|
if (!bare) {
|
|
7020
|
-
|
|
7020
|
+
writeAgentsMd({
|
|
7021
7021
|
projectDir: cwd,
|
|
7022
7022
|
mode: "cloud",
|
|
7023
7023
|
projectRef: env2.projectRef,
|
|
7024
7024
|
region: env2.region,
|
|
7025
7025
|
envName: name
|
|
7026
7026
|
});
|
|
7027
|
-
console.log(` ${blue("\u2714")}
|
|
7027
|
+
console.log(` ${blue("\u2714")} AGENTS.md regenerated for "${name}"`);
|
|
7028
7028
|
}
|
|
7029
7029
|
}
|
|
7030
7030
|
let shouldDeploy;
|
|
@@ -7478,10 +7478,10 @@ async function envUse(name, cwd) {
|
|
|
7478
7478
|
const updatedManifest = readManifest(cwd);
|
|
7479
7479
|
if (!isBareManifest(updatedManifest)) {
|
|
7480
7480
|
if (name === "local") {
|
|
7481
|
-
|
|
7481
|
+
writeAgentsMd({ projectDir: cwd, mode: "local" });
|
|
7482
7482
|
} else {
|
|
7483
7483
|
const env2 = updatedManifest.cloud.environments[name];
|
|
7484
|
-
|
|
7484
|
+
writeAgentsMd({
|
|
7485
7485
|
projectDir: cwd,
|
|
7486
7486
|
mode: "cloud",
|
|
7487
7487
|
projectRef: env2.projectRef,
|
|
@@ -7489,7 +7489,7 @@ async function envUse(name, cwd) {
|
|
|
7489
7489
|
envName: name
|
|
7490
7490
|
});
|
|
7491
7491
|
}
|
|
7492
|
-
console.log(` ${blue("\u2714")}
|
|
7492
|
+
console.log(` ${blue("\u2714")} AGENTS.md regenerated for ${name} mode`);
|
|
7493
7493
|
}
|
|
7494
7494
|
console.log(`
|
|
7495
7495
|
${blue(isRefresh ? "Refreshed" : "Switched to")} ${bold(name)}`);
|
|
@@ -7701,17 +7701,17 @@ async function envRelink(name, cwd, opts = {}) {
|
|
|
7701
7701
|
});
|
|
7702
7702
|
console.log(` ${blue("\u2714")} .env.local updated (pooler URL from API)`);
|
|
7703
7703
|
if (!isBareManifest(manifest)) {
|
|
7704
|
-
|
|
7704
|
+
writeAgentsMd({
|
|
7705
7705
|
projectDir: cwd,
|
|
7706
7706
|
mode: "cloud",
|
|
7707
7707
|
projectRef: env2.projectRef,
|
|
7708
7708
|
region: env2.region,
|
|
7709
7709
|
envName: name
|
|
7710
7710
|
});
|
|
7711
|
-
console.log(` ${blue("\u2714")}
|
|
7711
|
+
console.log(` ${blue("\u2714")} AGENTS.md updated`);
|
|
7712
7712
|
}
|
|
7713
7713
|
} else {
|
|
7714
|
-
console.log(` ${dim(`.env.local and
|
|
7714
|
+
console.log(` ${dim(`.env.local and AGENTS.md left on the active env \u2014 prod never auto-activates (use \`env use prod\` to switch).`)}`);
|
|
7715
7715
|
}
|
|
7716
7716
|
if (opts.deploy === false) {
|
|
7717
7717
|
const deployCmd = `npx agentlink-sh@latest env deploy ${name}`;
|
|
@@ -11781,7 +11781,7 @@ SUPABASE_DB_PASSWORD=${ctx.dbPass}
|
|
|
11781
11781
|
await trackedStep("configure-claude", "Configuring Claude Code", async () => {
|
|
11782
11782
|
ensureClaudeSettings(projectDir, !!options.cloud || !!options.skipEnv);
|
|
11783
11783
|
const mode2 = options.skipEnv ? "pending-env" : options.cloud ? "cloud" : "local";
|
|
11784
|
-
|
|
11784
|
+
writeAgentsMd({
|
|
11785
11785
|
projectDir,
|
|
11786
11786
|
mode: mode2,
|
|
11787
11787
|
projectRef: ctx.projectRef,
|
|
@@ -12086,8 +12086,8 @@ ${red("Error:")} Supabase is not running.
|
|
|
12086
12086
|
projectDir
|
|
12087
12087
|
);
|
|
12088
12088
|
});
|
|
12089
|
-
await step("Updating
|
|
12090
|
-
|
|
12089
|
+
await step("Updating AGENTS.md", async () => {
|
|
12090
|
+
writeAgentsMd({
|
|
12091
12091
|
projectDir,
|
|
12092
12092
|
mode: isCloud ? "cloud" : "local",
|
|
12093
12093
|
projectRef: env2?.projectRef,
|
|
@@ -12284,7 +12284,7 @@ async function runDryRun(projectDir, isCloud) {
|
|
|
12284
12284
|
console.log(`
|
|
12285
12285
|
${bold("Side effects")} ${dim("(skipped in dry run)")}`);
|
|
12286
12286
|
console.log(` ${dim("\u2022")} update agent plugin + companion skills`);
|
|
12287
|
-
console.log(` ${dim("\u2022")} rewrite .
|
|
12287
|
+
console.log(` ${dim("\u2022")} rewrite AGENTS.md, .claude/settings.json`);
|
|
12288
12288
|
console.log(` ${dim("\u2022")} apply ${sqlCount} SQL schema file(s) to ${isCloud ? "cloud DB" : "local DB"}`);
|
|
12289
12289
|
if (isCloud) {
|
|
12290
12290
|
console.log(` ${dim("\u2022")} update PostgREST config + auth config`);
|
|
@@ -12318,7 +12318,7 @@ async function printUpdateSummary(projectDir, allowDirty) {
|
|
|
12318
12318
|
// config.toml, .gitignore
|
|
12319
12319
|
".claude/": [],
|
|
12320
12320
|
"root": []
|
|
12321
|
-
// agentlink.json,
|
|
12321
|
+
// agentlink.json, AGENTS.md, .env.local, etc.
|
|
12322
12322
|
};
|
|
12323
12323
|
for (const file of changed) {
|
|
12324
12324
|
if (file.startsWith("supabase/schemas/")) groups["supabase/schemas/"].push(file);
|
|
@@ -13540,7 +13540,7 @@ env.command("add [name]").description("Add or re-add a cloud environment (dev or
|
|
|
13540
13540
|
console.log();
|
|
13541
13541
|
console.log(` ${bold("To use local development:")}`);
|
|
13542
13542
|
console.log(` ${dim("supabase start")} ${dim("# bring up the local Docker stack")}`);
|
|
13543
|
-
console.log(` ${dim("npx agentlink-sh@latest env use local")} ${dim("# point .env.local +
|
|
13543
|
+
console.log(` ${dim("npx agentlink-sh@latest env use local")} ${dim("# point .env.local + AGENTS.md at it")}`);
|
|
13544
13544
|
console.log();
|
|
13545
13545
|
console.log(` ${dim("Or scaffold a new project against local Docker:")} ${dim("npx agentlink-sh@latest <name> --local")}`);
|
|
13546
13546
|
console.log();
|