@codewalla_india/openspec 1.0.1 → 1.0.3

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
@@ -9,6 +9,7 @@
9
9
 
10
10
  <p align="center">
11
11
  <a href="https://github.com/codewalla-engineering/OpenSpec/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/codewalla-engineering/OpenSpec/actions/workflows/ci.yml/badge.svg" /></a>
12
+ <a href="https://www.npmjs.com/package/@codewalla_india/openspec"><img alt="npm version" src="https://img.shields.io/npm/v/@codewalla_india/openspec?style=flat-square" /></a>
12
13
  <a href="./LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square" /></a>
13
14
  <a href="https://discord.gg/YctCnvvshC"><img alt="Discord" src="https://img.shields.io/discord/1411657095639601154?style=flat-square&logo=discord&logoColor=white&label=Discord&suffix=%20online" /></a>
14
15
  </p>
@@ -17,6 +18,7 @@
17
18
  <summary><strong>The most loved spec framework.</strong></summary>
18
19
 
19
20
  [![Stars](https://img.shields.io/github/stars/codewalla-engineering/OpenSpec?style=flat-square&label=Stars)](https://github.com/codewalla-engineering/OpenSpec/stargazers)
21
+ [![Downloads](https://img.shields.io/npm/dm/@codewalla_india/openspec?style=flat-square&label=Downloads/mo)](https://www.npmjs.com/package/@codewalla_india/openspec)
20
22
  [![Contributors](https://img.shields.io/github/contributors/codewalla-engineering/OpenSpec?style=flat-square&label=Contributors)](https://github.com/codewalla-engineering/OpenSpec/graphs/contributors)
21
23
 
22
24
  </details>
@@ -87,7 +87,7 @@ function formatBody(bodyText) {
87
87
  * Generate a pre-filled GitHub issue URL for manual submission
88
88
  */
89
89
  function generateManualSubmissionUrl(title, body) {
90
- const repo = 'Fission-AI/OpenSpec';
90
+ const repo = 'codewalla-engineering/OpenSpec';
91
91
  const encodedTitle = encodeURIComponent(title);
92
92
  const encodedBody = encodeURIComponent(body);
93
93
  const encodedLabels = encodeURIComponent('feedback');
@@ -114,7 +114,7 @@ function submitViaGhCli(title, body) {
114
114
  'issue',
115
115
  'create',
116
116
  '--repo',
117
- 'Fission-AI/OpenSpec',
117
+ 'codewalla-engineering/OpenSpec',
118
118
  '--title',
119
119
  title,
120
120
  '--body',
@@ -304,7 +304,7 @@ export async function generateApplyInstructions(projectRoot, changeName, schemaN
304
304
  state = 'blocked';
305
305
  missingComprehension = true;
306
306
  comprehension = gate.info;
307
- instruction = `Complete the comprehension quiz in /opsx:apply before implementation (score ≥ ${gate.info.thresholdPercent}% on specs and tasks).`;
307
+ instruction = `Complete the comprehension quiz in /opsx:apply before implementation (score ≥ ${gate.info.thresholdPercent}% on proposal, design, specs, and tasks).`;
308
308
  }
309
309
  else if (gate.active && gate.info) {
310
310
  comprehension = gate.info;
@@ -192,25 +192,6 @@ export const COMMAND_REGISTRY = [
192
192
  takesValue: true,
193
193
  },
194
194
  COMMON_FLAGS.json,
195
- {
196
- name: 'record-comprehension-pass',
197
- description: 'Record a successful comprehension quiz pass (use with instructions apply)',
198
- },
199
- {
200
- name: 'score',
201
- description: 'Quiz score 0-100 (required with --record-comprehension-pass)',
202
- takesValue: true,
203
- },
204
- {
205
- name: 'attempt',
206
- description: 'Quiz attempt number',
207
- takesValue: true,
208
- },
209
- {
210
- name: 'question-count',
211
- description: 'Number of quiz questions taken',
212
- takesValue: true,
213
- },
214
195
  COMMON_FLAGS.store,
215
196
  ],
216
197
  },
package/dist/core/init.js CHANGED
@@ -553,8 +553,8 @@ export class InitCommand {
553
553
  }
554
554
  // Links
555
555
  console.log();
556
- console.log(`Learn more: ${chalk.cyan('https://github.com/Fission-AI/OpenSpec')}`);
557
- console.log(`Feedback: ${chalk.cyan('https://github.com/Fission-AI/OpenSpec/issues')}`);
556
+ console.log(`Learn more: ${chalk.cyan('https://github.com/codewalla-engineering/OpenSpec')}`);
557
+ console.log(`Feedback: ${chalk.cyan('https://github.com/codewalla-engineering/OpenSpec/issues')}`);
558
558
  // Restart instruction if any tools were configured
559
559
  if (results.createdTools.length > 0 || results.refreshedTools.length > 0) {
560
560
  console.log();
@@ -4,6 +4,6 @@
4
4
  * Interpolated into apply skill and slash command templates so agents run
5
5
  * a spec comprehension gate before implementation.
6
6
  */
7
- export declare const COMPREHENSION_QUIZ_GUIDANCE = "4. **Comprehension quiz (required before implementation)**\n\n After `openspec instructions apply --change \"<name>\" --json`, check comprehension status:\n\n - If `missingComprehension` is true OR `comprehension.required && !comprehension.passed`:\n - Do NOT edit application source code or mark task checkboxes yet\n - Read `contextFiles.specs`, `contextFiles.tasks` (or the `tasks` array in apply JSON), and `contextFiles.design` (design for distractors only)\n - Use `comprehension.questionCount` from the JSON as the number of questions\n\n **Generate questions**\n - Create exactly `comprehension.questionCount` multiple-choice questions\n - Each question MUST map to one of:\n - a `### Requirement:` or `#### Scenario:` from delta specs, OR\n - a pending (unchecked) task from `tasks.md` / the apply `tasks` array\n - When both specs and pending tasks exist, include at least 2 task-based questions and cover the rest from specs/scenarios\n - Do NOT use completed tasks as question sources\n - Each question: 4 options (1 correct from the source item, 3 plausible distractors from other requirements/scenarios/tasks in the change)\n\n **Present and grade**\n - Use the **AskUserQuestion tool** for each question (one at a time)\n - Grade: `score_percent = round(correct / question_count * 100)`\n - Pass when `score_percent >= comprehension.thresholdPercent` (default 80)\n\n **On failure (score below threshold)**\n - Announce score and that a new quiz is required\n - Update `.comprehension-session.yaml` in the change dir with `used_sources` from this attempt\n - Generate a NEW question set using different requirement/scenario/task sources (avoid `used_sources`)\n - Retry until pass\n\n **On pass**\n ```bash\n openspec instructions apply --change \"<name>\" --record-comprehension-pass --score <score> --attempt <n> --question-count <count> --json\n ```\n - Re-run `openspec instructions apply --change \"<name>\" --json`\n - Confirm `state` is `\"ready\"` and `comprehension.passed` is true before continuing\n\n **Output template**\n ```\n ## Applying: <change-name> \u2014 comprehension check\n\n Specs: <requirementCount> requirements, <scenarioCount> scenarios; Tasks: <pendingTaskCount> pending \u2192 <questionCount> questions\n\n Question 1/N: ...\n ...\n \u2713 Comprehension passed (<score>%, attempt <n>)\n ```\n\n Then continue to step 5 (show progress) and implementation.";
7
+ export declare const COMPREHENSION_QUIZ_GUIDANCE = "4. **Comprehension quiz (required before implementation)**\n\n After `openspec instructions apply --change \"<name>\" --json`, check comprehension status:\n\n - If `missingComprehension` is true OR `comprehension.required && !comprehension.passed`:\n - Do NOT edit application source code or mark task checkboxes yet\n - Read `contextFiles.proposal`, `contextFiles.design`, `contextFiles.specs`, and `contextFiles.tasks` (or the `tasks` array in apply JSON)\n - Use `comprehension.questionCount` from the JSON as the number of questions\n\n **Generate questions**\n - Create exactly `comprehension.questionCount` multiple-choice questions\n - Each question MUST map to one artifact category:\n - **Proposal**: motivation, scope, or impact from `proposal.md`\n - **Design**: decisions, trade-offs, or approach from `design.md`\n - **Specs**: a `### Requirement:` or `#### Scenario:` from delta specs\n - **Tasks**: conceptual understanding of the implementation plan from pending (unchecked) tasks\n - When proposal, design, specs (with requirements), and pending tasks all exist, include at least one question from each category; fill remaining slots from any category\n - Do NOT use completed tasks as question sources\n - Each question: 4 options (1 correct from the source substance, 3 plausible distractors from other proposal/design/requirements/scenarios/task substance in the change)\n\n **Task question quality**\n - Test scope, approach, dependencies, sequencing rationale, or alignment with proposal/design\n - **Forbidden**: task numbers, checklist order, \"which task says X verbatim\", or answers identifiable only by task index or checkbox position\n - Good: \"What is the primary file where quiz rules are centralized?\" (answer from task substance)\n - Bad: \"Which task number updates `comprehension-guidance.ts`?\" or \"What is the exact text of task 2.1?\"\n\n **Present and grade**\n - Use the **AskUserQuestion tool** for each question (one at a time)\n - Grade: `score_percent = round(correct / question_count * 100)`\n - Pass when `score_percent >= comprehension.thresholdPercent` (default 80)\n\n **On failure (score below threshold)**\n - Announce score and that a new quiz is required\n - Update `.comprehension-session.yaml` in the change dir with `used_sources` from this attempt\n - Generate a NEW question set using different proposal/design/requirement/scenario/task sources (avoid `used_sources`)\n - Retry until pass\n\n **On pass**\n ```bash\n openspec instructions apply --change \"<name>\" --record-comprehension-pass --score <score> --attempt <n> --question-count <count> --json\n ```\n - Re-run `openspec instructions apply --change \"<name>\" --json`\n - Confirm `state` is `\"ready\"` and `comprehension.passed` is true before continuing\n\n **Output template**\n ```\n ## Applying: <change-name> \u2014 comprehension check\n\n Proposal, design, specs (<requirementCount> requirements, <scenarioCount> scenarios), tasks (<pendingTaskCount> pending) \u2192 <questionCount> questions\n\n Question 1/N: ...\n ...\n \u2713 Comprehension passed (<score>%, attempt <n>)\n ```\n\n Then continue to step 5 (show progress) and implementation.";
8
8
  export declare const COMPREHENSION_APPLY_GUARDRAIL = "- NEVER implement code or mark tasks while `missingComprehension` is true\n- NEVER skip the comprehension quiz when the apply JSON requires it\n- If the user asks to skip the quiz, refuse and explain they must pass or set comprehension.enabled: false in openspec/config.yaml";
9
9
  //# sourceMappingURL=comprehension-guidance.d.ts.map
@@ -10,17 +10,25 @@ export const COMPREHENSION_QUIZ_GUIDANCE = `4. **Comprehension quiz (required be
10
10
 
11
11
  - If \`missingComprehension\` is true OR \`comprehension.required && !comprehension.passed\`:
12
12
  - Do NOT edit application source code or mark task checkboxes yet
13
- - Read \`contextFiles.specs\`, \`contextFiles.tasks\` (or the \`tasks\` array in apply JSON), and \`contextFiles.design\` (design for distractors only)
13
+ - Read \`contextFiles.proposal\`, \`contextFiles.design\`, \`contextFiles.specs\`, and \`contextFiles.tasks\` (or the \`tasks\` array in apply JSON)
14
14
  - Use \`comprehension.questionCount\` from the JSON as the number of questions
15
15
 
16
16
  **Generate questions**
17
17
  - Create exactly \`comprehension.questionCount\` multiple-choice questions
18
- - Each question MUST map to one of:
19
- - a \`### Requirement:\` or \`#### Scenario:\` from delta specs, OR
20
- - a pending (unchecked) task from \`tasks.md\` / the apply \`tasks\` array
21
- - When both specs and pending tasks exist, include at least 2 task-based questions and cover the rest from specs/scenarios
18
+ - Each question MUST map to one artifact category:
19
+ - **Proposal**: motivation, scope, or impact from \`proposal.md\`
20
+ - **Design**: decisions, trade-offs, or approach from \`design.md\`
21
+ - **Specs**: a \`### Requirement:\` or \`#### Scenario:\` from delta specs
22
+ - **Tasks**: conceptual understanding of the implementation plan from pending (unchecked) tasks
23
+ - When proposal, design, specs (with requirements), and pending tasks all exist, include at least one question from each category; fill remaining slots from any category
22
24
  - Do NOT use completed tasks as question sources
23
- - Each question: 4 options (1 correct from the source item, 3 plausible distractors from other requirements/scenarios/tasks in the change)
25
+ - Each question: 4 options (1 correct from the source substance, 3 plausible distractors from other proposal/design/requirements/scenarios/task substance in the change)
26
+
27
+ **Task question quality**
28
+ - Test scope, approach, dependencies, sequencing rationale, or alignment with proposal/design
29
+ - **Forbidden**: task numbers, checklist order, "which task says X verbatim", or answers identifiable only by task index or checkbox position
30
+ - Good: "What is the primary file where quiz rules are centralized?" (answer from task substance)
31
+ - Bad: "Which task number updates \`comprehension-guidance.ts\`?" or "What is the exact text of task 2.1?"
24
32
 
25
33
  **Present and grade**
26
34
  - Use the **AskUserQuestion tool** for each question (one at a time)
@@ -30,7 +38,7 @@ export const COMPREHENSION_QUIZ_GUIDANCE = `4. **Comprehension quiz (required be
30
38
  **On failure (score below threshold)**
31
39
  - Announce score and that a new quiz is required
32
40
  - Update \`.comprehension-session.yaml\` in the change dir with \`used_sources\` from this attempt
33
- - Generate a NEW question set using different requirement/scenario/task sources (avoid \`used_sources\`)
41
+ - Generate a NEW question set using different proposal/design/requirement/scenario/task sources (avoid \`used_sources\`)
34
42
  - Retry until pass
35
43
 
36
44
  **On pass**
@@ -44,7 +52,7 @@ export const COMPREHENSION_QUIZ_GUIDANCE = `4. **Comprehension quiz (required be
44
52
  \`\`\`
45
53
  ## Applying: <change-name> — comprehension check
46
54
 
47
- Specs: <requirementCount> requirements, <scenarioCount> scenarios; Tasks: <pendingTaskCount> pending → <questionCount> questions
55
+ Proposal, design, specs (<requirementCount> requirements, <scenarioCount> scenarios), tasks (<pendingTaskCount> pending) → <questionCount> questions
48
56
 
49
57
  Question 1/N: ...
50
58
  ...
@@ -196,7 +196,7 @@ export class UpdateCommand {
196
196
  console.log(' /opsx:continue Create the next artifact');
197
197
  console.log(' /opsx:apply Implement tasks');
198
198
  console.log();
199
- console.log(`Learn more: ${chalk.cyan('https://github.com/Fission-AI/OpenSpec')}`);
199
+ console.log(`Learn more: ${chalk.cyan('https://github.com/codewalla-engineering/OpenSpec')}`);
200
200
  }
201
201
  const configuredAndNewTools = [...new Set([...configuredTools, ...newlyConfiguredTools])];
202
202
  // 13. Detect new tool directories not currently configured
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codewalla_india/openspec",
3
- "version": "1.0.01",
3
+ "version": "1.0.03",
4
4
  "description": "AI-native system for spec-driven development",
5
5
  "keywords": [
6
6
  "openspec",