agentblueprint 0.6.24 → 0.6.26

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.
@@ -8,13 +8,14 @@
8
8
  import { renderSkillDirectory, slugify } from './renderers.js';
9
9
  export async function fetchAndRenderBlueprint(client, blueprintId, opts) {
10
10
  const orgId = opts.customerOrgId;
11
- // Fetch all data in parallel
12
- const [blueprint, businessCase, implementationPlan, useCase, businessProfile] = await Promise.all([
11
+ // Fetch all data in parallel (base skill included -- graceful degradation if unavailable)
12
+ const [blueprint, businessCase, implementationPlan, useCase, businessProfile, baseSkill] = await Promise.all([
13
13
  client.getBlueprint(blueprintId, orgId),
14
14
  client.getBusinessCase(blueprintId, orgId).catch(() => null),
15
15
  client.getImplementationPlan(blueprintId, orgId).catch(() => null),
16
16
  client.getUseCase(blueprintId, orgId).catch(() => null),
17
17
  client.getBusinessProfile(orgId).catch(() => null),
18
+ client.getBaseSkill().catch(() => null),
18
19
  ]);
19
20
  // Fetch reality data for return visits
20
21
  const [implementationState, progress] = await Promise.all([
@@ -37,6 +38,7 @@ export async function fetchAndRenderBlueprint(client, blueprintId, opts) {
37
38
  platform: vendorSkillData.platform,
38
39
  skillName: vendorSkillData.skillName,
39
40
  content: vendorSkillData.content,
41
+ files: vendorSkillData.files,
40
42
  };
41
43
  }
42
44
  else {
@@ -57,6 +59,7 @@ export async function fetchAndRenderBlueprint(client, blueprintId, opts) {
57
59
  generalGuide: generalGuideData?.content,
58
60
  vendorGuide: vendorGuideInput,
59
61
  vendorSkill: vendorSkillInput,
62
+ baseSkill: baseSkill ?? undefined,
60
63
  implementationState,
61
64
  progress,
62
65
  };
@@ -68,6 +71,7 @@ export async function fetchAndRenderBlueprint(client, blueprintId, opts) {
68
71
  slug,
69
72
  title,
70
73
  hasImplementationState: !!implementationState,
74
+ hasBaseSkill: !!baseSkill,
71
75
  vendorSkillName: vendorSkillInput?.skillName,
72
76
  };
73
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-blueprint.js","sourceRoot":"","sources":["../src/fetch-blueprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-blueprint.js","sourceRoot":"","sources":["../src/fetch-blueprint.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
File without changes
@@ -1,4 +1,8 @@
1
- import type { ImplementationStateResponse, ProgressResponse } from './client.js';
1
+ import type { ImplementationStateResponse, ProgressResponse } from './types.js';
2
+ export interface SkillFile {
3
+ path: string;
4
+ content: string;
5
+ }
2
6
  export interface SkillRenderInput {
3
7
  blueprintTitle: string;
4
8
  blueprintId: string;
@@ -17,6 +21,10 @@ export interface SkillRenderInput {
17
21
  platform: string;
18
22
  skillName: string;
19
23
  content: string;
24
+ files?: SkillFile[];
25
+ };
26
+ baseSkill?: {
27
+ files: SkillFile[];
20
28
  };
21
29
  implementationState?: ImplementationStateResponse | null;
22
30
  progress?: ProgressResponse | null;
package/dist/renderers.js CHANGED
@@ -166,6 +166,9 @@ function buildSkillBody(input) {
166
166
  lines.push(`- **Platform:** ${platform}`);
167
167
  lines.push(`- **Pattern:** ${pattern}`);
168
168
  lines.push(`- **Agents:** ${team.length}`, '');
169
+ if (input.baseSkill) {
170
+ lines.push('> A base implementation skill has been installed at `.claude/skills/agent-blueprint/`.', '> It contains deployment patterns and reference material for all platforms.', '');
171
+ }
169
172
  if (input.vendorSkill) {
170
173
  const platformLabel = input.vendorSkill.platform.charAt(0).toUpperCase() + input.vendorSkill.platform.slice(1);
171
174
  lines.push(`> A ${platformLabel} expert skill has been installed at \`.claude/skills/${input.vendorSkill.skillName}/\`.`, '> It will be auto-loaded for platform-specific tasks.', '');
@@ -1851,6 +1854,11 @@ function buildGettingStartedReturnVisit(input) {
1851
1854
  lines.push(`Agent${inProgressNames.length > 1 ? 's' : ''} in progress: ${inProgressNames.join(', ')}. Pick up where you left off.`);
1852
1855
  lines.push('');
1853
1856
  }
1857
+ if (input.baseSkill) {
1858
+ lines.push('The `.claude/skills/agent-blueprint/` skill contains deployment patterns and');
1859
+ lines.push('reference material applicable to all platforms. Read it for general guidance.');
1860
+ lines.push('');
1861
+ }
1854
1862
  if (input.vendorSkill) {
1855
1863
  lines.push(`The \`.claude/skills/${input.vendorSkill.skillName}/\` skill contains platform-specific`);
1856
1864
  lines.push('deployment guidance. Follow it for all platform-specific work.');
@@ -1977,17 +1985,39 @@ function buildGettingStarted(input) {
1977
1985
  lines.push('Ask the user where they want to deploy this. Three scenarios:');
1978
1986
  lines.push('');
1979
1987
  lines.push('**A. User has a platform and instance ready** (e.g., ServiceNow, Salesforce):');
1980
- lines.push('1. Get the instance URL and credentials.');
1981
- lines.push('2. Confirm this is a development or sandbox instance, not production.');
1982
- lines.push('3. Verify you are connected to the correct instance before making any changes.');
1983
1988
  lines.push('');
1989
+ lines.push('Ask for the instance URL and credentials. Adapt your approach based on what the');
1990
+ lines.push('user provides. Do not present access tiers as a menu. Respond naturally:');
1991
+ lines.push('');
1992
+ lines.push('- **Full access (read + write credentials):** Confirm this is a development or');
1993
+ lines.push(' sandbox instance, not production. Verify you are connected to the correct');
1994
+ lines.push(' instance before making any changes. You will create records, write scripts,');
1995
+ lines.push(' and configure integrations directly.');
1996
+ lines.push('- **Read-only access:** The user provides credentials but tells you access is');
1997
+ lines.push(' read-only, or you discover you cannot write. Connect to the instance to');
1998
+ lines.push(' discover schemas, read existing configurations, and understand the environment.');
1999
+ lines.push(' Generate all records and scripts as local files. Walk the user through creating');
2000
+ lines.push(' them. After the user acts, verify the result by reading back from the instance.');
2001
+ lines.push('- **No access:** The user cannot or will not provide credentials. Work entirely');
2002
+ lines.push(' from the blueprint spec and skill knowledge. Generate all artifacts as local');
2003
+ lines.push(' files. Provide step-by-step instructions for every action. You cannot verify');
2004
+ lines.push(' results directly, so ask the user to share outcomes (screenshots, record IDs,');
2005
+ lines.push(' error messages) after each step.');
2006
+ lines.push('');
2007
+ if (input.baseSkill) {
2008
+ lines.push('A base implementation skill has been installed at `.claude/skills/agent-blueprint/`.');
2009
+ lines.push('It contains deployment patterns and reference material applicable to all platforms.');
2010
+ lines.push('Read it before starting any implementation work.');
2011
+ lines.push('');
2012
+ }
1984
2013
  if (input.vendorSkill) {
1985
2014
  const platformLabel = input.vendorSkill.platform.charAt(0).toUpperCase() + input.vendorSkill.platform.slice(1);
1986
2015
  lines.push(`A ${platformLabel} expert skill has been installed at \`.claude/skills/${input.vendorSkill.skillName}/\`.`);
1987
2016
  lines.push('It contains the connection verification steps, deployment sequence, platform');
1988
2017
  lines.push('patterns, and debugging guidance. Follow it for all platform-specific work.');
2018
+ lines.push('The deployment sequence adapts to the access level the user provides.');
1989
2019
  }
1990
- else {
2020
+ else if (!input.baseSkill) {
1991
2021
  lines.push('If `references/deployment-guide-*.md` files are present, read those for');
1992
2022
  lines.push('platform-specific tooling, deployment sequence, and gotchas.');
1993
2023
  }
@@ -2047,15 +2077,24 @@ function buildGettingStarted(input) {
2047
2077
  lines.push('### Your role through implementation');
2048
2078
  lines.push('');
2049
2079
  lines.push('Your job does not end when simulation scripts are deployed. Stay with the user');
2050
- lines.push('through the full implementation. Operate in three modes:');
2080
+ lines.push('through the full implementation. How you operate depends on the access level');
2081
+ lines.push('established in Step 2:');
2082
+ lines.push('');
2083
+ lines.push('**With full access:** Do the work directly. Create records, write scripts,');
2084
+ lines.push('configure integrations, test. Act first, report after.');
2085
+ lines.push('');
2086
+ lines.push('**With read-only access:** Use the instance connection to discover schemas,');
2087
+ lines.push('read existing config, and verify results. Generate all records and scripts as');
2088
+ lines.push('local files. Walk the user through creating them on the platform. After each');
2089
+ lines.push('step, read back from the instance to confirm it was done correctly.');
2051
2090
  lines.push('');
2052
- lines.push('1. **Do it directly.** When you have system access (MCP, API, credentials), do the');
2053
- lines.push(' work yourself. Create records, write scripts, configure integrations, test.');
2054
- lines.push('2. **Offer to do it with access.** When you know how but lack credentials or');
2055
- lines.push(' permissions, tell the user what you need.');
2056
- lines.push('3. **Walk the user through it.** When only the user can act (UI-only config,');
2057
- lines.push(' credential vaults, third-party admin consoles), give exact step-by-step');
2058
- lines.push(' instructions, then verify programmatically that it worked.');
2091
+ lines.push('**With no access:** Generate everything as local files with step-by-step');
2092
+ lines.push('instructions. Ask the user to share results after each action so you can');
2093
+ lines.push('guide corrections. Be explicit about what you cannot verify.');
2094
+ lines.push('');
2095
+ lines.push('Within any access level, shift fluidly as needed. Even with full access, some');
2096
+ lines.push('tasks require the user to act (UI-only config, credential vaults, approval');
2097
+ lines.push('workflows). Give exact instructions and verify programmatically when possible.');
2059
2098
  lines.push('');
2060
2099
  // Step 4
2061
2100
  lines.push('## Step 4: Validate');
@@ -2554,9 +2593,22 @@ export function renderSkillDirectory(input) {
2554
2593
  if (input.vendorGuide && !input.vendorSkill) {
2555
2594
  files.set(`references/deployment-guide-${input.vendorGuide.platform}.md`, input.vendorGuide.content);
2556
2595
  }
2557
- // Vendor expert skill
2596
+ // Base skill (always, when present)
2597
+ if (input.baseSkill) {
2598
+ for (const file of input.baseSkill.files) {
2599
+ files.set(`.claude/skills/agent-blueprint/${file.path}`, file.content);
2600
+ }
2601
+ }
2602
+ // Vendor expert skill (multi-file when available, single SKILL.md fallback)
2558
2603
  if (input.vendorSkill) {
2559
- files.set(`.claude/skills/${input.vendorSkill.skillName}/SKILL.md`, input.vendorSkill.content);
2604
+ if (input.vendorSkill.files && input.vendorSkill.files.length > 0) {
2605
+ for (const file of input.vendorSkill.files) {
2606
+ files.set(`.claude/skills/${input.vendorSkill.skillName}/${file.path}`, file.content);
2607
+ }
2608
+ }
2609
+ else {
2610
+ files.set(`.claude/skills/${input.vendorSkill.skillName}/SKILL.md`, input.vendorSkill.content);
2611
+ }
2560
2612
  }
2561
2613
  // Scripts
2562
2614
  files.set('scripts/validate-spec.sh', buildValidateScript());