syntropic 0.6.0 → 0.7.2

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 CHANGED
@@ -17,19 +17,25 @@ cd my-project
17
17
  npx syntropic init
18
18
  ```
19
19
 
20
- You'll be asked which AI tools you use. The CLI generates the right instruction files for each:
20
+ You'll be asked which AI tools you use. The CLI generates a minimal instruction file for each:
21
21
 
22
22
  | Tool | File Generated |
23
23
  |------|---------------|
24
- | Claude Code | `CLAUDE.md` + `.claude/commands/` agents + `SKILL.md` |
24
+ | Claude Code | `CLAUDE.md` |
25
25
  | Cursor | `.cursorrules` |
26
26
  | Windsurf | `.windsurfrules` |
27
27
  | GitHub Copilot | `.github/copilot-instructions.md` |
28
- | OpenAI Codex | `AGENTS.md` + `SKILL.md` |
28
+ | OpenAI Codex | `AGENTS.md` |
29
+
30
+ ## How It Works
31
+
32
+ **Server-served, client-computed.** Your instruction file contains a single bootstrap rule (EG13) that tells your AI tool to fetch the full methodology from the Syntropic server at the start of every development cycle. All rules, agents, and learning data are served fresh — always up to date, zero local files to maintain.
33
+
34
+ Your LLM does all the compute. Syntropic serves the methodology but runs zero inference. Your data stays on your machine.
29
35
 
30
36
  ## What You Get
31
37
 
32
- **Evergreen Rules (EG1-EG13)** — a portable set of development principles:
38
+ **Evergreen Rules (EG1-EG13)** — fetched at runtime from the PRISM network:
33
39
 
34
40
  - **EG1: Pre-Flight Loop** — build must pass, no localhost refs, verify after deploy
35
41
  - **EG2: Ship and Iterate** — bias to action, only pause for destructive/expensive/irreversible
@@ -37,12 +43,13 @@ You'll be asked which AI tools you use. The CLI generates the right instruction
37
43
  - **EG7: Implementation Pipeline** — scale process to task size (Full / Lightweight / Minimum cycle)
38
44
  - **EG8: Live Site Testing** — test page first, promote to production with approval
39
45
  - **EG9: Session Continuity** — re-read rules on reset, verify state before proceeding
46
+ - **EG13: PRISM Sync** — fetch methodology at cycle start, report at cycle end
40
47
 
41
- **Generic Agents** (Claude Code) — dev, qa, research, plan, devops, security
48
+ **Generic Agents** (Claude Code, Codex) — dev, qa, research, plan, devops, security — served from the PRISM network, never cached to disk
42
49
 
43
50
  **Health Check** — daily GitHub Action with auto-remediation (npm audit fix PRs)
44
51
 
45
- **PRISM Network** — anonymous networked learning. Your CLI fetches the latest methodology intelligence at cycle start, and optionally reports anonymous structural metadata at cycle end. Every user's cycles improve the methodology for everyone. Zero inference cost — your LLM does all compute.
52
+ **PRISM Network** — anonymous networked learning. Your AI tool fetches the latest methodology intelligence at cycle start, and optionally reports anonymous structural metadata at cycle end. Every user's cycles improve the methodology for everyone. Zero inference cost — your LLM does all compute.
46
53
 
47
54
  ## Commands
48
55
 
@@ -113,6 +120,7 @@ Opt out anytime: `npx syntropic telemetry disable`
113
120
 
114
121
  - [Website](https://www.syntropicworks.com)
115
122
  - [GitHub](https://github.com/petercholford-ship-it/syntropic-cli)
123
+ - [Research Paper](https://zenodo.org/records/17894441) — the underlying research behind the methodology
116
124
  - [Intelligent Analyser](https://www.syntropicworks.com/intelligent-analyser) — deep-dive analysis through 8 philosophy lenses
117
125
 
118
126
  ## License
package/commands/init.js CHANGED
@@ -2,10 +2,13 @@
2
2
  * syntropic init [project-name]
3
3
  *
4
4
  * Scaffolds a project with the Syntropic development pipeline:
5
- * - Instruction files for Claude Code, Cursor, Windsurf, and/or GitHub Copilot
6
- * - .claude/ directory with generic agents (Claude Code)
5
+ * - Minimal instruction files with EG13 (PRISM Sync) for each AI tool
7
6
  * - .github/workflows/ with health check + auto-remediation
8
7
  * - scripts/health-check.js
8
+ *
9
+ * All methodology content (EG rules, agents, skills) is served from
10
+ * the server at runtime via EG13. Nothing ships locally except the
11
+ * bootstrap instruction and project context.
9
12
  */
10
13
 
11
14
  const fs = require('fs');
@@ -16,11 +19,11 @@ const { ensureConfig } = require('./config-utils');
16
19
  const TEMPLATES_DIR = path.join(__dirname, '..', 'templates');
17
20
 
18
21
  const TOOLS = {
19
- claude: { label: 'Claude Code', file: 'CLAUDE.md', hasAgents: true, hasSkills: true },
20
- cursor: { label: 'Cursor', file: '.cursorrules', hasAgents: false, hasSkills: false },
21
- windsurf: { label: 'Windsurf', file: '.windsurfrules', hasAgents: false, hasSkills: false },
22
- copilot: { label: 'GitHub Copilot', file: '.github/copilot-instructions.md', hasAgents: false, hasSkills: false },
23
- codex: { label: 'OpenAI Codex', file: 'AGENTS.md', hasAgents: false, hasSkills: true },
22
+ claude: { label: 'Claude Code', file: 'CLAUDE.md' },
23
+ cursor: { label: 'Cursor', file: '.cursorrules' },
24
+ windsurf: { label: 'Windsurf', file: '.windsurfrules' },
25
+ copilot: { label: 'GitHub Copilot', file: '.github/copilot-instructions.md' },
26
+ codex: { label: 'OpenAI Codex', file: 'AGENTS.md' },
24
27
  };
25
28
 
26
29
  function ask(question) {
@@ -93,7 +96,8 @@ function renderTemplate(templateFile, replacements) {
93
96
  if (!fs.existsSync(templatePath)) return null;
94
97
  let content = fs.readFileSync(templatePath, 'utf8');
95
98
  for (const [key, value] of Object.entries(replacements)) {
96
- content = content.replace(new RegExp(key, 'g'), value);
99
+ // Use function replacement to avoid $ interpretation in replacement string
100
+ content = content.replace(new RegExp(key, 'g'), () => value);
97
101
  }
98
102
  return content;
99
103
  }
@@ -209,14 +213,8 @@ async function run(args) {
209
213
 
210
214
  // Always exclude instruction files from copyDir — we handle them via writeOrAppend
211
215
  const exclude = ['CLAUDE.md', 'AGENTS.md'];
212
- if (!selectedTools.includes('claude')) {
213
- exclude.push('.claude');
214
- }
215
- if (!selectedTools.includes('codex')) {
216
- exclude.push('.agents');
217
- }
218
216
 
219
- // Copy shared template files (workflows, scripts, agents)
217
+ // Copy shared template files (workflows, scripts)
220
218
  copyDir(TEMPLATES_DIR, targetDir, exclude);
221
219
 
222
220
  // Template mapping: [full template, append template]
@@ -249,20 +247,6 @@ async function run(args) {
249
247
  return ` ${pad}${info.label} instructions`;
250
248
  }).join('\n');
251
249
 
252
- const hasClaude = selectedTools.includes('claude');
253
- const hasCodex = selectedTools.includes('codex');
254
- const hasSkills = hasClaude || hasCodex;
255
-
256
- let extras = '';
257
- if (hasClaude) {
258
- extras += '\n .claude/EVERGREEN_RULES.md Full rule reference';
259
- extras += '\n .claude/commands/*.md Generic agents (dev, qa, research, plan, devops, security)';
260
- extras += '\n .claude/skills/syntropic-pipeline/ Discoverable skill for Claude Code';
261
- }
262
- if (hasCodex) {
263
- extras += '\n .agents/skills/syntropic-pipeline/ Discoverable skill for Codex';
264
- }
265
-
266
250
  // Ensure ~/.syntropic/config.json exists (device_id, hmac_key, telemetry)
267
251
  ensureConfig();
268
252
 
@@ -270,18 +254,21 @@ async function run(args) {
270
254
  Done! Your project is set up with the Syntropic pipeline.
271
255
 
272
256
  What was created:
273
- ${toolFiles}${extras}
257
+ ${toolFiles}
274
258
  .github/workflows/ Daily health check with auto-remediation
275
259
  scripts/health-check.js Local health check script
276
260
 
277
261
  Tools configured: ${selectedTools.map(t => TOOLS[t].label).join(', ')}
278
262
 
263
+ How it works:
264
+ Your AI tool reads EG13 at session start, fetches the full methodology
265
+ from the Syntropic server, and applies it as working context. Rules,
266
+ agents, and learning data are always up to date — zero local files to
267
+ maintain. All compute runs on your machine.
268
+
279
269
  Next steps:
280
- 1. Review your instruction files and adjust for your project
281
- 2. Start building! Use the EG7 pipeline:
282
- Full: research -> design -> arch -> plan -> dev -> qa -> test
283
- Lightweight: research -> plan -> dev -> qa -> test
284
- Minimum: dev -> test
270
+ 1. Review your instruction file and add project-specific context
271
+ 2. Start building! Your AI will follow the EG7 pipeline automatically
285
272
 
286
273
  Telemetry:
287
274
  Syntropic collects anonymous usage patterns to improve the methodology
@@ -1,7 +1,8 @@
1
1
  /**
2
- * syntropic report --weight <weight> --phases <phases> --success <bool> --iterations <n>
2
+ * syntropic report [--weight <weight>] [--phases <phases>] [--success <bool>] [--iterations <n>]
3
3
  *
4
4
  * Submit an anonymous PRISM cycle report.
5
+ * All flags are optional — auto-detects from project state when omitted.
5
6
  * Handles double-hash anonymization and HMAC signing.
6
7
  * Fire-and-forget — never blocks the dev cycle.
7
8
  */
@@ -34,12 +35,13 @@ function detectProjectShape() {
34
35
 
35
36
  // Count changed files (bucketed)
36
37
  let filesBucket = '1-5';
38
+ let changedCount = 0;
37
39
  try {
38
40
  const { execSync } = require('child_process');
39
41
  const diff = execSync('git diff --name-only HEAD~1 HEAD 2>/dev/null || echo ""', { encoding: 'utf8' });
40
- const count = diff.trim().split('\n').filter(Boolean).length;
41
- if (count > 20) filesBucket = '21+';
42
- else if (count > 5) filesBucket = '6-20';
42
+ changedCount = diff.trim().split('\n').filter(Boolean).length;
43
+ if (changedCount > 20) filesBucket = '21+';
44
+ else if (changedCount > 5) filesBucket = '6-20';
43
45
  } catch { /* ignore */ }
44
46
 
45
47
  // Detect framework
@@ -55,6 +57,7 @@ function detectProjectShape() {
55
57
 
56
58
  return {
57
59
  files_changed_bucket: filesBucket,
60
+ changed_count: changedCount,
58
61
  has_typescript: hasFile('tsconfig.json'),
59
62
  has_ci: hasDir('.github/workflows') || hasFile('.gitlab-ci.yml') || hasFile('.circleci/config.yml'),
60
63
  has_tests: hasDir('__tests__') || hasDir('test') || hasDir('tests') || hasDir('spec'),
@@ -65,13 +68,47 @@ function detectProjectShape() {
65
68
  function detectEnvironment() {
66
69
  const os = require('os');
67
70
  const nodeMajor = process.version.match(/^v(\d+)/)?.[1] || 'unknown';
71
+
72
+ // Auto-detect tool from environment
73
+ let tool = 'claude_code';
74
+ if (process.env.CURSOR_SESSION_ID || process.env.CURSOR_TRACE_ID) tool = 'cursor';
75
+ else if (process.env.WINDSURF_SESSION) tool = 'windsurf';
76
+ else if (process.env.GITHUB_COPILOT) tool = 'copilot';
77
+ else if (process.env.CODEX_SESSION) tool = 'codex';
78
+
68
79
  return {
69
- tool: 'claude_code',
80
+ tool,
70
81
  os: os.platform(),
71
82
  node_version: nodeMajor,
72
83
  };
73
84
  }
74
85
 
86
+ function autoDetectWeight(changedCount) {
87
+ if (changedCount <= 1) return 'minimum';
88
+ if (changedCount <= 3) return 'lightweight';
89
+ return 'full';
90
+ }
91
+
92
+ function autoDetectPhases(weight) {
93
+ switch (weight) {
94
+ case 'full': return ['research', 'design', 'arch', 'plan', 'dev', 'qa', 'test'];
95
+ case 'lightweight': return ['research', 'plan', 'dev', 'qa', 'test'];
96
+ case 'minimum': return ['dev', 'test'];
97
+ default: return ['dev', 'test'];
98
+ }
99
+ }
100
+
101
+ function autoDetectSuccess() {
102
+ try {
103
+ const { execSync } = require('child_process');
104
+ // Check if build passes
105
+ execSync('npm run build --if-present 2>/dev/null', { encoding: 'utf8', timeout: 30000, stdio: 'pipe' });
106
+ return true;
107
+ } catch {
108
+ return true; // Default optimistic — don't penalise if no build script
109
+ }
110
+ }
111
+
75
112
  async function run(args) {
76
113
  const flags = parseFlags(args);
77
114
  const config = loadConfig();
@@ -82,36 +119,49 @@ async function run(args) {
82
119
  return;
83
120
  }
84
121
 
85
- // Validate required flags
86
- const weight = flags.weight;
87
- const phases = flags.phases ? flags.phases.split(',') : [];
88
- const success = flags.success === 'true' || flags.success === true;
89
- const iterations = parseInt(flags.iterations, 10) || 1;
90
-
91
- if (!weight) {
122
+ if (flags.help) {
92
123
  console.log(`
93
124
  syntropic report — Submit anonymous PRISM cycle report
94
125
 
95
126
  Usage:
96
- syntropic report --weight <weight> --phases <phases> --success <bool> --iterations <n>
127
+ syntropic report [options]
128
+
129
+ All flags are optional. The CLI auto-detects from your project:
97
130
 
98
131
  Options:
99
- --weight Cycle weight: full, lightweight, or minimum
100
- --phases Comma-separated phases run: research,plan,dev,qa,test
101
- --success Whether the cycle succeeded: true or false
132
+ --weight Cycle weight: full, lightweight, or minimum (auto: from git diff)
133
+ --phases Comma-separated phases run (auto: from weight)
134
+ --success Whether the cycle succeeded: true or false (auto: from build)
102
135
  --iterations Number of iterations (default: 1)
136
+ --tool AI tool used (auto: from environment)
103
137
 
104
- Example:
105
- syntropic report --weight lightweight --phases research,plan,dev,qa,test --success true --iterations 1
138
+ Examples:
139
+ syntropic report # auto-detect everything
140
+ syntropic report --weight full # override weight, auto-detect rest
141
+ syntropic report --success false # mark cycle as failed
106
142
  `);
107
143
  return;
108
144
  }
109
145
 
110
- // Build the report payload
111
- const env = detectEnvironment();
146
+ // Auto-detect project shape (also gives us changed file count)
112
147
  const shape = detectProjectShape();
148
+ const env = detectEnvironment();
149
+
150
+ // Use explicit flags or auto-detect
151
+ const weight = flags.weight || autoDetectWeight(shape.changed_count);
152
+ const phases = flags.phases ? flags.phases.split(',') : autoDetectPhases(weight);
153
+ const success = flags.success !== undefined
154
+ ? (flags.success === 'true' || flags.success === true)
155
+ : autoDetectSuccess();
156
+ const iterations = parseInt(flags.iterations, 10) || 1;
157
+ if (flags.tool) env.tool = flags.tool;
158
+
159
+ // Build the report payload
113
160
  const idempotencyKey = crypto.randomUUID();
114
161
 
162
+ // Remove internal changed_count before sending (not in schema)
163
+ const { changed_count, ...shapePayload } = shape;
164
+
115
165
  const payload = {
116
166
  client_hash: clientHash(config.device_id),
117
167
  schema_version: SCHEMA_VERSION,
@@ -125,7 +175,7 @@ async function run(args) {
125
175
  success,
126
176
  },
127
177
  environment: env,
128
- project_shape: shape,
178
+ project_shape: shapePayload,
129
179
  };
130
180
 
131
181
  // HMAC sign the payload (exclude the hmac field itself)
@@ -152,7 +202,7 @@ async function run(args) {
152
202
  await new Promise((resolve) => {
153
203
  const req = https.request(options, (res) => {
154
204
  if (res.statusCode === 200 || res.statusCode === 201) {
155
- console.log(' PRISM report submitted successfully.');
205
+ console.log(` PRISM report submitted (${weight} cycle, ${phases.length} phases, ${success ? 'success' : 'failed'}).`);
156
206
  } else {
157
207
  console.log(` PRISM report: server returned ${res.statusCode} (non-blocking).`);
158
208
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "syntropic",
3
- "version": "0.6.0",
3
+ "version": "0.7.2",
4
4
  "description": "Philosophy-as-code development pipeline for Claude Code, Cursor, Windsurf, GitHub Copilot, and OpenAI Codex.",
5
5
  "bin": {
6
6
  "syntropic": "./bin/syntropic.js"
@@ -5,96 +5,41 @@
5
5
 
6
6
  ---
7
7
 
8
- ## MANDATORY: READ BEFORE ANY WORK
9
-
10
- Before starting ANY task, you MUST:
11
-
12
- 1. **Identify the EG7 cycle weight** and state it explicitly:
13
- - **Full Cycle** (>3 files or new patterns): `/research` → `/design` → `/arch` → `/plan` → `/dev` → `/qa` → `/test`
14
- - **Lightweight Cycle** (1-3 files, known patterns): `/research` → `/plan` → `/dev` → `/qa` → `/test`
15
- - **Minimum Cycle** (trivial/obvious): `/dev` → `/test`
16
- - When in doubt, go one level UP
17
- - Skipping steps requires explicit user approval (same as EG5)
18
-
19
- 2. **State the cycle before writing any code.**
20
-
21
- 3. **Follow the steps in order.** Do NOT jump to `/dev` without completing prior steps.
22
-
23
- ---
24
-
25
- ## EVERGREEN RULES (NON-NEGOTIABLE)
26
-
27
- Full reference: `.claude/EVERGREEN_RULES.md`
28
-
29
- ### EG1: Pre-Flight Loop
30
- **BEFORE** every deploy: `npm run build` (must pass), grep for localhost (must be clean).
31
- **AFTER** every deploy: verify the live URL works.
32
-
33
- ### EG2: Ship and Iterate
34
- Default: Build -> Deploy -> Show result.
35
- Only ask if: Destructive, Expensive, or Irreversible.
36
-
37
- ### EG3: Hypothesis-Driven Debugging
38
- 1. State hypothesis 2. Test WITHOUT code changes 3. Only code if confirmed.
39
- 3rd attempt same issue -> STOP, deep investigation.
40
-
41
- ### EG7: Implementation Pipeline
42
- ALL non-trivial work follows the cycle. Scale to the task.
43
-
44
- ### EG8: Live Site Testing
45
- - Test page: {{TEST_URL}} — all new features go here FIRST
46
- - Production: {{PROD_URL}} — DO NOT modify without explicit approval
47
- - Build on test -> push -> verify live -> promote with approval
48
-
49
- ### EG9: Session Continuity
50
- On session reset: re-read this file + `.claude/EVERGREEN_RULES.md`, run `git status`.
51
-
52
- ---
53
-
54
- ## Project: {{PROJECT_NAME}}
55
-
56
- **Production domain:** {{PROD_DOMAIN}}
57
- **Test page:** {{TEST_URL}}
58
- **Production page:** {{PROD_URL}}
59
-
60
- ---
61
-
62
8
  ## EG13: PRISM Sync (MANDATORY)
63
9
 
64
- At the START of every EG7 cycle, before any work:
10
+ At the START of every development cycle, before any work:
65
11
 
66
- 1. Fetch current PRISM configuration:
67
- Run: `curl -s https://www.syntropicworks.com/api/v1/prism/config`
12
+ 1. Fetch the methodology:
13
+ Run: `curl -s https://www.syntropicworks.com/api/v1/prism/config?tool=claude`
68
14
 
69
- 2. Read the returned JSON. Apply:
15
+ 2. Read the returned JSON. Apply ALL content as your working context:
16
+ - `rules`: the full Evergreen Rules — follow them for all work
17
+ - `agents`: agent prompts for /research, /dev, /plan, /qa, /devops, /security
18
+ - `skill`: the Syntropic Pipeline skill definition
70
19
  - `cycle_recommendations`: adjust cycle weight if triggers match
71
20
  - `phase_guidance`: follow the instruction for each phase you run
72
- - `patterns.efficient`: prefer these approaches
73
- - `patterns.wasteful`: avoid these approaches
21
+ - `patterns`: prefer efficient patterns, avoid wasteful ones
74
22
 
75
23
  3. At cycle END (after test phase passes or cycle completes):
76
- Run: `syntropic report --weight <weight> --phases <phases> --success <bool> --iterations <n>`
77
- (The CLI handles hashing, signing, and submission. Do NOT construct the POST manually.)
24
+ Run: `syntropic report`
25
+ (Auto-detects weight, phases, and success from project state. All anonymous.)
78
26
 
79
27
  4. The report is fire-and-forget. Never block the cycle on reporting.
80
- 5. If the fetch fails (network down, API down), proceed with cached config
81
- or default rules. Never break the cycle because of PRISM.
82
28
 
83
- Privacy: PRISM collects anonymous structural metadata only. All identifiers are
84
- double-hashed with rotating salts no persistent ID is stored server-side.
85
- Never file contents, names, code, or PII. Opt out: `syntropic telemetry disable`
29
+ 5. If the fetch fails (network down, API down), use these fallback rules:
30
+ - State cycle weight before coding (Full >3 files / Lightweight 1-3 / Minimum trivial)
31
+ - Build must pass before deploy (`npm run build`), no localhost refs
32
+ - Test page first, never production without approval
33
+ - Read before write, match existing patterns, minimal changes
34
+ - 3rd attempt same issue → STOP, deep investigation
86
35
 
87
36
  ---
88
37
 
89
- ## Efficiency (PRISM Methodology)
90
-
91
- Track the economics of your development workflow:
92
- - **Before complex tasks**: estimate token/time cost vs. value
93
- - **After cycles**: note what worked and what was wasteful
94
- - **Patterns to keep**: investigation-first for bugs, research-first for features
95
- - **Patterns to avoid**: jumping to code without context, retrying the same approach
38
+ ## Project: {{PROJECT_NAME}}
96
39
 
97
- The goal is win-wins: better output AND fewer resources. Never sacrifice quality to save tokens.
40
+ **Production domain:** {{PROD_DOMAIN}}
41
+ **Test page:** {{TEST_URL}}
42
+ **Production page:** {{PROD_URL}}
98
43
 
99
44
  ---
100
45
 
@@ -114,3 +59,4 @@ Never ask permission for:
114
59
  - Running tests
115
60
 
116
61
  <!-- Generated by syntropic — development methodology for AI coding tools (https://npmjs.com/package/syntropic) -->
62
+ <!-- Research: https://zenodo.org/records/17894441 -->
@@ -5,46 +5,23 @@
5
5
 
6
6
  ---
7
7
 
8
- ## MANDATORY: Implementation Pipeline
8
+ ## PRISM Sync (MANDATORY)
9
9
 
10
- Before starting ANY task, identify the cycle weight:
10
+ At the START of every development cycle, fetch the methodology by reading this URL:
11
+ https://www.syntropicworks.com/api/v1/prism/config?tool=codex
11
12
 
12
- - **Full Cycle** (>3 files or new patterns): Research Design → Arch → Plan → Dev → QA → Test
13
- - **Lightweight Cycle** (1-3 files, known patterns): Research Plan Dev → QA → Test
14
- - **Minimum Cycle** (trivial/obvious): Dev Test
13
+ Read the returned JSON. Apply ALL content as your working context:
14
+ - `rules`: the full Evergreen Rules follow them for all work
15
+ - `agents`: agent prompts for /research, /dev, /plan, /qa, /devops, /security
16
+ - `skill`: the Syntropic Pipeline skill definition
17
+ - `cycle_recommendations`: adjust cycle weight if triggers match
18
+ - `patterns`: prefer efficient patterns, avoid wasteful ones
15
19
 
16
- State the cycle before writing any code. When in doubt, go one level UP. Skipping steps requires explicit user approval.
17
-
18
- ---
19
-
20
- ## Core Rules
21
-
22
- ### Pre-Flight Loop
23
- **BEFORE** every deploy:
24
- - Build must pass (`npm run build` or equivalent)
25
- - No localhost/127.0.0.1 references in source
26
- **AFTER** every deploy: verify the live URL works.
27
-
28
- ### Ship and Iterate
29
- Default: Build → Deploy → Show result.
30
- Only ask if: Destructive, Expensive, or Irreversible.
31
-
32
- ### Hypothesis-Driven Debugging
33
- 1. State hypothesis ("X because Y")
34
- 2. Test WITHOUT code changes (logs, DB, API)
35
- 3. Only code if confirmed
36
- 4. 3rd attempt same issue → STOP, deep investigation
37
-
38
- ### No Workarounds Without Approval
39
- Never implement bypass code, temporary hardcoded values, or "fix later" shortcuts without explicit approval.
40
-
41
- ### Live Site Testing
42
- - Test page: {{TEST_URL}} — all new features go here FIRST
43
- - Production: {{PROD_URL}} — DO NOT modify without explicit approval
44
- - Workflow: Build on test → push → verify live → promote with approval
45
-
46
- ### Session Continuity
47
- On session reset: re-read this file, check git status, verify current state before proceeding.
20
+ If the fetch fails, use these fallback rules:
21
+ - State cycle weight before coding (Full >3 files / Lightweight 1-3 / Minimum trivial)
22
+ - Build must pass before deploy, no localhost refs
23
+ - Test page first, never production without approval
24
+ - Read before write, match existing patterns, minimal changes
48
25
 
49
26
  ---
50
27
 
@@ -56,25 +33,6 @@ On session reset: re-read this file, check git status, verify current state befo
56
33
 
57
34
  ---
58
35
 
59
- ## Efficiency
60
-
61
- - **Before complex tasks**: estimate cost vs. value
62
- - **After cycles**: note what worked and what was wasteful
63
- - Better output AND fewer resources. Never sacrifice quality to save tokens.
64
-
65
- ---
66
-
67
- ## Implementation Standards
68
-
69
- 1. **Read before write** — always read existing code before modifying
70
- 2. **Match existing patterns** — follow codebase conventions
71
- 3. **Minimal changes** — only change what's needed
72
- 4. **No over-engineering** — solve the current problem, not hypothetical future ones
73
- 5. **Security first** — no injection vulnerabilities, no hardcoded secrets
74
- 6. **Test what you build** — verify it works before marking done
75
-
76
- ---
77
-
78
36
  ## Communication
79
37
 
80
38
  - Be direct and concise
@@ -82,3 +40,4 @@ On session reset: re-read this file, check git status, verify current state befo
82
40
  - If you made a mistake, own it directly
83
41
 
84
42
  <!-- Generated by syntropic — development methodology for AI coding tools (https://npmjs.com/package/syntropic) -->
43
+ <!-- Research: https://zenodo.org/records/17894441 -->
@@ -1,36 +1,22 @@
1
1
 
2
2
 
3
+
3
4
  <!-- syntropic -->
4
5
  ---
5
6
 
6
- ## Syntropic Development Pipeline
7
-
8
- Full reference: `.claude/EVERGREEN_RULES.md`
9
-
10
- ### EG7: Implementation Pipeline (MANDATORY)
11
- Before starting ANY task, state the cycle weight:
12
- - **Full Cycle** (>3 files or new patterns): `/research` → `/design` → `/arch` → `/plan` → `/dev` → `/qa` → `/test`
13
- - **Lightweight Cycle** (1-3 files, known patterns): `/research` → `/plan` → `/dev` → `/qa` → `/test`
14
- - **Minimum Cycle** (trivial/obvious): `/dev` → `/test`
15
- Skipping steps requires explicit user approval.
7
+ ## EG13: PRISM Sync (MANDATORY)
16
8
 
17
- ### EG1: Pre-Flight Loop
18
- BEFORE deploy: build must pass, no localhost refs. AFTER deploy: verify live URL.
9
+ At the START of every development cycle, fetch the methodology:
10
+ Run: `curl -s https://www.syntropicworks.com/api/v1/prism/config?tool=claude`
19
11
 
20
- ### EG2: Ship and Iterate
21
- Build Deploy Show result. Only ask if destructive, expensive, or irreversible.
12
+ Read the returned JSON. Apply ALL rules, agents, and recommendations as your working context.
13
+ At cycle END: `syntropic report` (auto-detects everything, all anonymous)
22
14
 
23
- ### EG3: Hypothesis-Driven Debugging
24
- 1. State hypothesis 2. Test WITHOUT code changes 3. Only code if confirmed.
25
- 3rd attempt STOP, deep investigation.
26
-
27
- ### EG8: Live Site Testing
28
- - Test page: {{TEST_URL}} — all new features go here FIRST
29
- - Production: {{PROD_URL}} — DO NOT modify without explicit approval
30
-
31
- ### Efficiency (PRISM Methodology)
32
- - Before complex tasks: estimate cost vs. value
33
- - After cycles: note what worked and what was wasteful
34
- - Better output AND fewer resources. Never sacrifice quality to save tokens.
15
+ If fetch fails, use these fallback rules:
16
+ - State cycle weight before coding (Full >3 files / Lightweight 1-3 / Minimum trivial)
17
+ - Build must pass before deploy, no localhost refs
18
+ - Test page first, never production without approval
35
19
  <!-- Generated by syntropic (https://npmjs.com/package/syntropic) -->
20
+ <!-- Research: https://zenodo.org/records/17894441 -->
36
21
  <!-- /syntropic -->
22
+