@esoteric-logic/praxis-harness 3.3.1 → 3.5.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.
@@ -39,15 +39,14 @@ Do NOT show "Work on praxis" or "Work on maximus" or any project name — the en
39
39
 
40
40
  Platform outputs use suffixed filenames so users can distinguish them at a glance:
41
41
 
42
- | Platform | Output Filename | Budget | When |
43
- |----------|----------------|--------|------|
44
- | Claude Projects | `system-prompt.md` | 5,000 chars | Standalone projects |
45
- | Claude Projects | `project-instructions-claude-desktop.md` | 5,000 chars | Compiled projects (compiler output) |
46
- | Perplexity Spaces | `space-instructions-perplexity.md` | 4,000 chars | All projects |
42
+ | Platform | Output Filename | Budget |
43
+ |----------|----------------|--------|
44
+ | Claude Projects | `system-prompt.md` | 5,000 chars |
45
+ | Perplexity Spaces | `space-instructions-perplexity.md` | 4,500 chars |
47
46
 
48
- Each project has exactly **2 output files** — one for Claude Projects, one for Perplexity Spaces.
49
- - Standalone: `system-prompt.md` + `space-instructions-perplexity.md`
50
- - Compiled: `project-instructions-claude-desktop.md` + `space-instructions-perplexity.md`
47
+ Each project has exactly **2 output files** — one per platform, same filenames regardless of mode.
48
+ - `system-prompt.md` standalone: hand-written, compiled: generated from profile blocks
49
+ - `space-instructions-perplexity.md` standalone: condensed from system-prompt, compiled: assembled from blocks
51
50
 
52
51
  Claude Code `CLAUDE.md` is NOT generated by this skill — use `px-scaffold`.
53
52
 
@@ -371,7 +370,7 @@ Read the full `system-prompt.md` as source.
371
370
 
372
371
  ### 3a. Generate Perplexity Space instructions
373
372
 
374
- **Target:** `space-instructions-perplexity.md` | **Budget:** under 4,000 chars
373
+ **Target:** `space-instructions-perplexity.md` | **Budget:** under 4,500 chars
375
374
 
376
375
  **Include:** identity, domain expertise, research domains, source priority, answer format, key frameworks (by name only), reasoning approach, accuracy standards, anti-hallucination rules
377
376
  **Exclude:** internal templates, scoring matrices, reference file content, deployment details, full tables
@@ -416,7 +415,7 @@ Think step-by-step: Understand the question → search sources → analyze findi
416
415
 
417
416
  After generating, check:
418
417
  - `system-prompt.md` under 5,000 chars
419
- - `space-instructions-perplexity.md` under 4,000 chars
418
+ - `space-instructions-perplexity.md` under 4,500 chars
420
419
 
421
420
  If over budget: flag and suggest sections to trim.
422
421
 
@@ -447,7 +446,7 @@ node bin/prompt-compile.js <project-name>
447
446
 
448
447
  **Claude Desktop / Projects (claude.ai):**
449
448
  1. Open project at claude.ai/projects → "Set project instructions"
450
- 2. Paste `system-prompt.md` (standalone) or `project-instructions-claude-desktop.md` (compiled)
449
+ 2. Paste `system-prompt.md`
451
450
  3. If `references/` exists: upload each `.md` file as project knowledge
452
451
  4. Save
453
452
 
@@ -493,7 +492,7 @@ Print deployment reminders for any project with changes.
493
492
  ### 6a. Read all project files
494
493
  1. Read `prompt-config.yaml` for project metadata
495
494
  2. Read `system-prompt.md` (source of truth)
496
- 3. Read platform outputs (`system-prompt.md` or `project-instructions-claude-desktop.md`, `space-instructions-perplexity.md`)
495
+ 3. Read platform outputs (`system-prompt.md`, `space-instructions-perplexity.md`)
497
496
  4. Read all files in `references/` directory
498
497
  5. List any other files in the project folder
499
498
 
@@ -509,9 +508,8 @@ Check each file against these criteria:
509
508
  - Are all referenced knowledge files present in references/?
510
509
 
511
510
  **Budget checks:**
512
- - `system-prompt.md` under 5,000 chars? (standalone)
513
- - `project-instructions-claude-desktop.md` under 5,000 chars? (compiled)
514
- - `space-instructions-perplexity.md` under 4,000 chars?
511
+ - `system-prompt.md` under 5,000 chars?
512
+ - `space-instructions-perplexity.md` under 4,500 chars?
515
513
 
516
514
  **Currency checks (via Perplexity):**
517
515
  - Are domain-specific terms, standards, and versions still current?
@@ -524,7 +522,7 @@ Show a structured report:
524
522
  |---------------------------|--------|-----------------------------------|
525
523
  | Quality Controls section | PASS | Present in system-prompt.md |
526
524
  | Anti-Hallucination | FAIL | Missing — will add |
527
- | Budget: Perplexity | PASS | 2,392 / 4,000 chars |
525
+ | Budget: Perplexity | PASS | 2,392 / 4,500 chars |
528
526
  | File naming | FAIL | Uses old convention — will rename |
529
527
  | Knowledge files | WARN | 0 reference files — consider adding |
530
528
  ```
@@ -737,7 +735,7 @@ Maximus PP: 2 contracts at IRS (from USASpending)
737
735
  Gaps: Key personnel [RESEARCH NEEDED]
738
736
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
739
737
  Files created:
740
- project-instructions-claude-desktop.md (2,480 chars) — compiled from profile
738
+ system-prompt.md (2,480 chars) — compiled from profile
741
739
  ✓ space-instructions-perplexity.md (3,976 chars) — deal-specific research domains
742
740
  ✓ references/irs-masterfile-intel.md
743
741
  ✓ knowledge/deal-context.md
@@ -930,7 +928,7 @@ Determine which platforms are targets from `prompt-config.yaml`.
930
928
  ### 11b. Deploy sequence (per platform)
931
929
 
932
930
  **For Claude Projects / Desktop:**
933
- 1. Determine file: `system-prompt.md` (standalone) or `project-instructions-claude-desktop.md` (compiled)
931
+ 1. Read `system-prompt.md`
934
932
  2. Copy to clipboard: `cat <file> | pbcopy`
935
933
  3. Print: "Copied to clipboard. Paste at: claude.ai/projects → Set project instructions"
936
934
  4. List knowledge files to upload: all `.md` files from `references/` AND `knowledge/`
@@ -1102,8 +1100,7 @@ NEXT GATE CHECKLIST: Pre-Proposal
1102
1100
  - **Claude Code CLAUDE.md**: NOT generated by px-prompt — use px-scaffold
1103
1101
 
1104
1102
  ### File naming
1105
- - Standalone Claude Projects output: `system-prompt.md`
1106
- - Compiled Claude Projects output: `project-instructions-claude-desktop.md`
1103
+ - Claude Projects output: `system-prompt.md` (all modes)
1107
1104
  - Perplexity output: `space-instructions-perplexity.md`
1108
1105
 
1109
1106
  ### Quality defaults (mandatory in all generated prompts)
@@ -58,7 +58,7 @@ function discoverAllProjects() {
58
58
  const CHAR_BUDGETS = {
59
59
  'claude-code': Infinity,
60
60
  'claude-project': 5000,
61
- 'perplexity-space': 4000,
61
+ 'perplexity-space': 4500,
62
62
  };
63
63
 
64
64
  // Global flags set by CLI parser
@@ -213,7 +213,7 @@ function compileProject(projectName, targets, projectDirOverride, clientDirOverr
213
213
 
214
214
  const outputNames = {
215
215
  'claude-code': 'CLAUDE.md',
216
- 'claude-project': 'project-instructions-claude-desktop.md',
216
+ 'claude-project': 'system-prompt.md',
217
217
  'perplexity-space': 'space-instructions-perplexity.md',
218
218
  };
219
219
 
@@ -302,8 +302,8 @@ function main() {
302
302
  console.log('No projects found.');
303
303
  process.exit(0);
304
304
  }
305
- console.log(`${'Project'.padEnd(28)} ${'Mode'.padEnd(12)} ${'System Prompt'.padEnd(15)} ${'Claude Desktop'.padEnd(15)} ${'Perplexity'.padEnd(15)} Refs`);
306
- console.log('-'.repeat(105));
305
+ console.log(`${'Project'.padEnd(28)} ${'Mode'.padEnd(12)} ${'System Prompt'.padEnd(15)} ${'Perplexity'.padEnd(15)} Refs`);
306
+ console.log('-'.repeat(85));
307
307
  for (const proj of allProjects) {
308
308
  const cfgPath = path.join(proj.dir, 'prompt-config.yaml');
309
309
  const cfg = fs.existsSync(cfgPath) ? yaml.load(fs.readFileSync(cfgPath, 'utf8')) : {};
@@ -318,7 +318,7 @@ function main() {
318
318
  ? fs.readdirSync(refsDir).filter((f) => f.endsWith('.md')).length
319
319
  : 0;
320
320
  console.log(
321
- `${proj.name.padEnd(28)} ${mode.padEnd(12)} ${fileStatus('system-prompt.md').padEnd(15)} ${fileStatus('project-instructions-claude-desktop.md').padEnd(15)} ${fileStatus('space-instructions-perplexity.md').padEnd(15)} ${refCount}`
321
+ `${proj.name.padEnd(28)} ${mode.padEnd(12)} ${fileStatus('system-prompt.md').padEnd(15)} ${fileStatus('space-instructions-perplexity.md').padEnd(15)} ${refCount}`
322
322
  );
323
323
  }
324
324
  process.exit(0);
@@ -338,7 +338,7 @@ function main() {
338
338
  console.log('\n\x1b[1mPROMPT ENGINE DASHBOARD\x1b[0m');
339
339
  console.log('\x1b[90m' + '━'.repeat(110) + '\x1b[0m');
340
340
  console.log(
341
- `${'Project'.padEnd(24)} ${'Mode'.padEnd(12)} ${'Claude Proj'.padEnd(14)} ${'Perplexity'.padEnd(14)} ${'Refs'.padEnd(6)} ${'Updated'.padEnd(12)} Stale?`
341
+ `${'Project'.padEnd(24)} ${'Mode'.padEnd(12)} ${'System Prompt'.padEnd(14)} ${'Perplexity'.padEnd(14)} ${'Refs'.padEnd(6)} ${'Updated'.padEnd(12)} Stale?`
342
342
  );
343
343
  console.log('\x1b[90m' + '─'.repeat(110) + '\x1b[0m');
344
344
 
@@ -371,7 +371,7 @@ function main() {
371
371
  const stale = daysSince > STALE_DAYS ? '\x1b[31mYes\x1b[0m' : '\x1b[32mNo\x1b[0m';
372
372
 
373
373
  console.log(
374
- `${proj.name.padEnd(24)} ${mode.padEnd(12)} ${fileBudget('project-instructions-claude-desktop.md', CHAR_BUDGETS['claude-project']).padEnd(23)} ${fileBudget('space-instructions-perplexity.md', CHAR_BUDGETS['perplexity-space']).padEnd(23)} ${String(refCount).padEnd(6)} ${updated.padEnd(12)} ${stale}`
374
+ `${proj.name.padEnd(24)} ${mode.padEnd(12)} ${fileBudget('system-prompt.md', CHAR_BUDGETS['claude-project']).padEnd(23)} ${fileBudget('space-instructions-perplexity.md', CHAR_BUDGETS['perplexity-space']).padEnd(23)} ${String(refCount).padEnd(6)} ${updated.padEnd(12)} ${stale}`
375
375
  );
376
376
  }
377
377
 
package/lib/assemblers.js CHANGED
@@ -148,6 +148,20 @@ function assembleClaudeProject(blocks, projectConfig, vars) {
148
148
  for (const block of formatBlocks) lines.push(block.content, '');
149
149
  }
150
150
 
151
+ // Deal context — auto-injected from deal config vars
152
+ if (projectConfig.deal && vars.agency) {
153
+ lines.push('## Deal Context');
154
+ lines.push(`**Customer**: ${vars.agency}`);
155
+ if (vars.program_name) lines.push(`**Program**: ${vars.program_name}`);
156
+ if (vars.incumbent) lines.push(`**Incumbent**: ${vars.incumbent}`);
157
+ if (vars.contract_value) lines.push(`**Value**: ${vars.contract_value}`);
158
+ if (vars.naics) lines.push(`**NAICS**: ${vars.naics}`);
159
+ if (vars.pop) lines.push(`**POP**: ${vars.pop}`);
160
+ if (projectConfig.deal_type) lines.push(`**Type**: ${projectConfig.deal_type}`);
161
+ if (projectConfig.capture_phase) lines.push(`**Phase**: ${projectConfig.capture_phase}`);
162
+ lines.push('');
163
+ }
164
+
151
165
  // Additional context
152
166
  const append = (projectConfig.overrides || {}).claude_project_append || {};
153
167
  if (append.additional_context) {
@@ -222,6 +236,18 @@ function assemblePerplexitySpace(blocks, projectConfig, vars) {
222
236
  lines.push('');
223
237
  }
224
238
 
239
+ // Deal context — auto-injected from deal config vars
240
+ if (projectConfig.deal && vars.agency) {
241
+ lines.push('## Deal Context');
242
+ lines.push(`Customer: ${vars.agency}`);
243
+ if (vars.program_name) lines.push(`Program: ${vars.program_name}`);
244
+ if (vars.incumbent) lines.push(`Incumbent: ${vars.incumbent}`);
245
+ if (vars.contract_value) lines.push(`Value: ${vars.contract_value}`);
246
+ if (projectConfig.deal_type) lines.push(`Type: ${projectConfig.deal_type}`);
247
+ if (projectConfig.capture_phase) lines.push(`Phase: ${projectConfig.capture_phase}`);
248
+ lines.push('');
249
+ }
250
+
225
251
  // Research Domains
226
252
  const append = (projectConfig.overrides || {}).perplexity_space_append || {};
227
253
  if (append.research_domains) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@esoteric-logic/praxis-harness",
3
- "version": "3.3.1",
3
+ "version": "3.5.0",
4
4
  "description": "Layered Claude Code harness — workflow discipline, AI-Kits, persistent vault integration",
5
5
  "bin": {
6
6
  "praxis-harness": "./bin/praxis.js",
@@ -12,6 +12,14 @@ SSEB simulation: score only what's on the page against Section M. Ratings: Outst
12
12
  11-section assessment (Customer/Architecture/Process/Artifacts/Planning/Assumptions/Risks/Dependencies/Cyber/Cost/Competitive). PAMASI maturity: P→A→M→A→S→I. Gates: Shaping=P, Mid Capture=A-M, Pre-Proposal=S, Pre-Submission=I.
13
13
  BLUF every paragraph. FBP every claim. Active voice, SHALL→WILL, 70/30 mission/company. Ban "robust/world-class/seamless/leverage/synergy." Hierarchy: Approach→Framework→Methodology→Process (never conflate).
14
14
 
15
+ ## Deal Context
16
+ Customer: Office of Personnel Management (OPM)
17
+ Program: BENEFEDS
18
+ Incumbent: FedPoint Systems LLC (Long Term Care Partners / John Hancock)
19
+ Value: $500M ceiling
20
+ Type: recompete
21
+ Phase: Shaping
22
+
15
23
  ## Research Domains
16
24
  - OPM BENEFEDS contract history and performance (SAM.gov, FPDS)
17
25
  - FedPoint federal performance and ATO certifications
@@ -46,6 +46,16 @@ Match response length to question complexity. Lead with the answer. No preamble
46
46
 
47
47
  11-section scorecard (R/Y/G) + PAMASI stage + phase verdict (On Track/Needs Work/Off Track). Gate verdicts: Pass/Conditional/No Pass/Stop & Reset.
48
48
 
49
+ ## Deal Context
50
+ **Customer**: Office of Personnel Management (OPM)
51
+ **Program**: BENEFEDS
52
+ **Incumbent**: FedPoint Systems LLC (Long Term Care Partners / John Hancock)
53
+ **Value**: $500M ceiling
54
+ **NAICS**: 518210, 524292, 541512
55
+ **POP**: Jan 2023 – Dec 2026
56
+ **Type**: recompete
57
+ **Phase**: Shaping
58
+
49
59
  ## Knowledge Files
50
60
  Upload these alongside this prompt:
51
61
  - **references/maturity-questions.md** — maturity-questions
@@ -10,7 +10,13 @@ platforms:
10
10
  - claude-project
11
11
  - perplexity-space
12
12
 
13
- vars: {}
13
+ vars:
14
+ agency: "Defense Health Agency (DHA)"
15
+ program_name: "TRICARE Managed Care Support / Health IT Services"
16
+ incumbent: "Humana Government Business (East), TriWest Healthcare Alliance (West), Leidos (MHS GENESIS)"
17
+ contract_value: "T-5: $70.9B (East) + $65.1B (West) + $6.9B (MHS GENESIS)"
18
+ naics: "524114"
19
+ pop: "T-5 active through ~2032. T-6 recompete expected ~2031."
14
20
 
15
21
  knowledge_files:
16
22
  - file: references/dha-tricare-intel.md
@@ -33,8 +39,8 @@ knowledge_packs:
33
39
  overrides:
34
40
  perplexity_space_append:
35
41
  research_domains: |
36
- - DHA TRICARE T-5/T-6 contract developments (SAM.gov, USASpending, FPDS)
37
- - DHA strategic plan, IG/GAO findings, congressional oversight
38
- - TRICARE beneficiary experience, claims processing, provider networks
39
- - MHS GENESIS modernization and cloud migration
40
- - Maximus federal health IT and CX past performance
42
+ - DHA TRICARE T-5/T-6 contract developments (SAM.gov, FPDS)
43
+ - DHA strategic plan, GAO findings, congressional oversight
44
+ - TRICARE beneficiary experience and provider networks
45
+ - MHS GENESIS modernization
46
+ - Maximus federal health IT past performance
@@ -12,12 +12,20 @@ SSEB simulation: score only what's on the page against Section M. Ratings: Outst
12
12
  11-section assessment (Customer/Architecture/Process/Artifacts/Planning/Assumptions/Risks/Dependencies/Cyber/Cost/Competitive). PAMASI maturity: P→A→M→A→S→I. Gates: Shaping=P, Mid Capture=A-M, Pre-Proposal=S, Pre-Submission=I.
13
13
  BLUF every paragraph. FBP every claim. Active voice, SHALL→WILL, 70/30 mission/company. Ban "robust/world-class/seamless/leverage/synergy." Hierarchy: Approach→Framework→Methodology→Process (never conflate).
14
14
 
15
+ ## Deal Context
16
+ Customer: Defense Health Agency (DHA)
17
+ Program: TRICARE Managed Care Support / Health IT Services
18
+ Incumbent: Humana Government Business (East), TriWest Healthcare Alliance (West), Leidos (MHS GENESIS)
19
+ Value: T-5: $70.9B (East) + $65.1B (West) + $6.9B (MHS GENESIS)
20
+ Type: new-start
21
+ Phase: Shaping
22
+
15
23
  ## Research Domains
16
- - DHA TRICARE T-5/T-6 contract developments (SAM.gov, USASpending, FPDS)
17
- - DHA strategic plan, IG/GAO findings, congressional oversight
18
- - TRICARE beneficiary experience, claims processing, provider networks
19
- - MHS GENESIS modernization and cloud migration
20
- - Maximus federal health IT and CX past performance
24
+ - DHA TRICARE T-5/T-6 contract developments (SAM.gov, FPDS)
25
+ - DHA strategic plan, GAO findings, congressional oversight
26
+ - TRICARE beneficiary experience and provider networks
27
+ - MHS GENESIS modernization
28
+ - Maximus federal health IT past performance
21
29
 
22
30
  ## How to Answer
23
31
  No flattery or filler. Be skeptical, concise.
@@ -46,6 +46,16 @@ Match response length to question complexity. Lead with the answer. No preamble
46
46
 
47
47
  11-section scorecard (R/Y/G) + PAMASI stage + phase verdict (On Track/Needs Work/Off Track). Gate verdicts: Pass/Conditional/No Pass/Stop & Reset.
48
48
 
49
+ ## Deal Context
50
+ **Customer**: Defense Health Agency (DHA)
51
+ **Program**: TRICARE Managed Care Support / Health IT Services
52
+ **Incumbent**: Humana Government Business (East), TriWest Healthcare Alliance (West), Leidos (MHS GENESIS)
53
+ **Value**: T-5: $70.9B (East) + $65.1B (West) + $6.9B (MHS GENESIS)
54
+ **NAICS**: 524114
55
+ **POP**: T-5 active through ~2032. T-6 recompete expected ~2031.
56
+ **Type**: new-start
57
+ **Phase**: Shaping
58
+
49
59
  ## Knowledge Files
50
60
  Upload these alongside this prompt:
51
61
  - **references/maturity-questions.md** — maturity-questions