@konductro/claude-plugin 2.1.0 → 2.2.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konductro/claude-plugin",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Claude Code plugin for the Konductro platform — technical analysis and delivery tasks",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -297,7 +297,7 @@ server.tool(
297
297
  title: z.string().describe('Task title'),
298
298
  description: z.string().describe('Technical description of the task'),
299
299
  repositoryId: z.string().describe('Repository ID from the context'),
300
- type: z.enum(['ui_component', 'api_java', 'api_node', 'android', 'ios', 'infra']).default('api_node').describe('Task type'),
300
+ type: z.string().trim().max(24).optional().describe('Short free-text tech tag derived from the repo stack (e.g. C#, PHP, Node, Java, UI, Infra); one token, max 24 chars, no fixed list'),
301
301
  acceptanceCriteria: z.array(z.string()).default([]).describe('Technical acceptance criteria'),
302
302
  architecturalNotes: z.array(z.string()).default([]).describe('Implementation notes for the agent'),
303
303
  componentPath: z.string().optional().nullable().describe('Primary file/directory path for this task'),
@@ -348,6 +348,30 @@ server.tool(
348
348
  }
349
349
  );
350
350
 
351
+ // Tool: Submit a regenerated developer brief (KON-325)
352
+ server.tool(
353
+ 'submit_regenerated_brief',
354
+ "Submit a freshly regenerated developer brief for a task to Konductro. It becomes the task's current brief and is appended to the brief history (the previous version is preserved). Regenerate the brief tailored to Claude Code conventions before calling this.",
355
+ {
356
+ ticketId: z.string().describe('The ticket ID or key (e.g. KON-325) to update'),
357
+ content: z.string().describe('The full regenerated developer brief (markdown)'),
358
+ toolset: z.enum(['claude', 'q', 'codex', 'cursor']).default('claude').describe("Coding toolset that produced this brief (this plugin: 'claude')"),
359
+ },
360
+ async ({ ticketId, content, toolset }) => {
361
+ const result = await konductroFetch(`/api/cli/tickets/${ticketId}/regenerate-brief`, {
362
+ method: 'POST',
363
+ body: JSON.stringify({ content, toolset }),
364
+ });
365
+
366
+ return {
367
+ content: [{
368
+ type: 'text',
369
+ text: `Developer brief regenerated for ${ticketId} — now version ${result.version} (${result.toolset}).`,
370
+ }],
371
+ };
372
+ }
373
+ );
374
+
351
375
  // Tool: List my tickets
352
376
  server.tool(
353
377
  'list_my_tickets',
@@ -45,7 +45,7 @@ Based on the story requirements and your codebase understanding, plan the tasks.
45
45
  - **Execution order** — what needs to be built first (e.g., schema before API before UI)
46
46
  - **Task boundaries** — each task should be a single PR, touching one concern
47
47
  - **Repository assignment** — which repo does each task belong to
48
- - **Task type** — `api_node`, `api_java`, `ui_component`, `android`, `ios`, `infra`
48
+ - **Task type** — a short free-text tech tag derived from the target repo's stack (e.g. `C#`, `PHP`, `Node`, `Java`, `Angular`, `UI`, `Infra`). One canonical token, max 24 chars — there is no fixed list; match the repo's actual language/domain.
49
49
  - **Dependencies between tasks** — task 2 may depend on task 1's API
50
50
 
51
51
  Present your proposed decomposition to the user before submitting.
@@ -57,7 +57,7 @@ For each task, produce the full developer brief — this is the complete impleme
57
57
  1. **title** — short, action-oriented (e.g., "Add sprint.projectId column and migration")
58
58
  2. **description** — technical description of what to build and how, referencing specific files, patterns, and APIs
59
59
  3. **repositoryId** — from the context (the repo this task targets)
60
- 4. **type** — `api_node`, `api_java`, `ui_component`, `android`, `ios`, `infra`
60
+ 4. **type** — short free-text tech tag from the repo's stack (e.g. `C#`, `PHP`, `Node`, `Java`, `Angular`, `UI`, `Infra`); one canonical token, max 24 chars, no fixed list
61
61
  5. **acceptanceCriteria** — specific, testable criteria for this task
62
62
  6. **architecturalNotes** — implementation hints, patterns to follow, gotchas
63
63
  7. **componentPath** — primary file or directory being changed
@@ -0,0 +1,43 @@
1
+ ---
2
+ name: regenerate-brief
3
+ description: Regenerate a task's developer brief using Claude Code, tailored to the current codebase, and submit it back to Konductro. Use when a developer wants a fresh, tool-tailored brief for an existing task.
4
+ allowed-tools: Read, Grep, Glob, Bash, mcp__konductro__list_my_tickets, mcp__konductro__get_ticket_context, mcp__konductro__submit_regenerated_brief
5
+ ---
6
+
7
+ # Regenerate Developer Brief
8
+
9
+ Help a developer regenerate the developer brief for a Konductro task, tailored to Claude Code, then submit it back. The regenerated brief becomes the task's current brief; the previous version is preserved in the brief history (nothing is lost).
10
+
11
+ ## Workflow
12
+
13
+ ### Step 1: Pick the task
14
+
15
+ Call `list_my_tickets` to show assigned tickets, or take a ticket key the developer gives you (e.g. `KON-325`). Choose the task whose brief to regenerate.
16
+
17
+ ### Step 2: Load current context
18
+
19
+ Call `get_ticket_context` with the ticket ID. Review the **current brief** (context pack), description, acceptance criteria, architectural notes, and target repository — this is your starting point.
20
+
21
+ ### Step 3: Explore the codebase
22
+
23
+ Use Read / Grep / Glob against the **local** repository to ground the brief in the actual code as it stands now — relevant files, existing patterns, entry points, and tests. A regenerated brief should reflect the current state of the code, not just the original decomposition.
24
+
25
+ ### Step 4: Regenerate the brief
26
+
27
+ Write a fresh developer brief tailored to Claude Code conventions. Use clear, actionable sections:
28
+ - **Architecture Context** — how this task fits, key constraints
29
+ - **Files to Create / Files to Modify** — concrete paths + what changes
30
+ - **Implementation Steps** — a numbered, ordered approach
31
+ - **Out of Scope** — what this task explicitly does not cover
32
+
33
+ Keep it focused on THIS task. Prefer concrete file paths and specifics over generic advice.
34
+
35
+ ### Step 5: Submit
36
+
37
+ Call `submit_regenerated_brief` with the ticket ID and the regenerated brief as `content` (the `toolset` defaults to `claude` for this plugin). On success it becomes the current brief and is recorded as a new version.
38
+
39
+ ## Rules
40
+
41
+ - This does not change the task's status or branch — it only updates the brief. To start work, use `/start-ticket`.
42
+ - If `submit_regenerated_brief` fails (auth/validation), show the error clearly **and** show the brief you wrote so the developer can retry without losing it.
43
+ - Regenerate against the real local code — don't just reword the existing brief.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: start-ticket
3
3
  description: Pick up an assigned ticket and start work — creates branch, pushes ticket spec, updates status. Use when a developer wants to begin working on a ticket.
4
- allowed-tools: Read, Grep, Glob, Bash, mcp__konductro__list_my_tickets, mcp__konductro__get_ticket_context, mcp__konductro__start_work
4
+ allowed-tools: Read, Grep, Glob, Bash, mcp__konductro__list_my_tickets, mcp__konductro__get_ticket_context, mcp__konductro__submit_regenerated_brief, mcp__konductro__start_work
5
5
  ---
6
6
 
7
7
  # Start Ticket
@@ -24,6 +24,10 @@ Call `get_ticket_context` with the chosen ticket ID. Present a summary:
24
24
  - Target repository and default base branch
25
25
  - Any dependencies or architectural notes
26
26
 
27
+ ### Step 2.5 (optional): Regenerate the brief before starting
28
+
29
+ Offer the developer the option to **regenerate the developer brief first**, tailored to Claude Code, so they start from a fresh, code-grounded brief. If they accept: explore the local codebase, write an updated brief, and submit it with `submit_regenerated_brief` (toolset `claude`) before moving on. If they decline, continue with the existing brief. (For a standalone regeneration without starting work, use `/regenerate-brief`.)
30
+
27
31
  ### Step 3: Confirm Branch Details
28
32
 
29
33
  Ask the developer: