@groupby/ai-dev 0.5.5 → 0.5.8

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.
Files changed (43) hide show
  1. package/package.json +1 -1
  2. package/teams/OOF/skills/jira-ticket-creator/README.md +22 -0
  3. package/teams/OOF/skills/jira-ticket-creator/SKILL.md +266 -0
  4. package/teams/fhr-ai-team/github/PULL_REQUEST_TEMPLATE/full.md +31 -0
  5. package/teams/fhr-ai-team/github/PULL_REQUEST_TEMPLATE/light.md +7 -0
  6. package/teams/fhr-ai-team/github/copilot-instructions.md +24 -0
  7. package/teams/fhr-ai-team/github/instructions/python.instructions.md +23 -0
  8. package/teams/fhr-ai-team/github/pull_request_template.md +21 -0
  9. package/teams/fhr-ai-team/prompts/brainstorm.md +7 -0
  10. package/teams/fhr-ai-team/prompts/plan-algo-tests.md +7 -0
  11. package/teams/fhr-ai-team/prompts/plan.md +7 -0
  12. package/teams/fhr-ai-team/prompts/pr-description.md +7 -0
  13. package/teams/fhr-ai-team/prompts/test.md +7 -0
  14. package/teams/fhr-ai-team/resources/AGENTS.md +55 -0
  15. package/teams/fhr-ai-team/resources/CLAUDE.md +52 -0
  16. package/teams/fhr-ai-team/resources/README.md +51 -0
  17. package/teams/fhr-ai-team/resources/claude-code-setup.md +60 -0
  18. package/teams/fhr-ai-team/resources/copilot-setup.md +64 -0
  19. package/teams/fhr-ai-team/resources/onboarding.md +179 -0
  20. package/teams/fhr-ai-team/resources/opencode-install.md +29 -0
  21. package/teams/fhr-ai-team/resources/opencode-setup.md +43 -0
  22. package/teams/fhr-ai-team/skills/algo-test-planning/SKILL.md +192 -0
  23. package/teams/fhr-ai-team/skills/algo-test-planning/references/pipeline-registry.md +280 -0
  24. package/teams/fhr-ai-team/skills/brainstorming/SKILL.md +111 -0
  25. package/teams/fhr-ai-team/skills/e2e-testing/SKILL.md +163 -0
  26. package/teams/fhr-ai-team/skills/grill-me/SKILL.md +10 -0
  27. package/teams/fhr-ai-team/skills/ml-tooling-dev/SKILL.md +313 -0
  28. package/teams/fhr-ai-team/skills/ml-tooling-dev/references/kubectl-debug.md +165 -0
  29. package/teams/fhr-ai-team/skills/ml-tooling-dev/references/mongodb-config.md +218 -0
  30. package/teams/fhr-ai-team/skills/ml-tooling-dev/references/pipeline-configs.md +190 -0
  31. package/teams/fhr-ai-team/skills/ml-tooling-dev/references/pipeline-steps.md +182 -0
  32. package/teams/fhr-ai-team/skills/ml-tooling-dev/scripts/kf_logs.py +203 -0
  33. package/teams/fhr-ai-team/skills/ml-tooling-dev/scripts/kf_query.py +233 -0
  34. package/teams/fhr-ai-team/skills/ml-tooling-dev/scripts/kf_wait.py +195 -0
  35. package/teams/fhr-ai-team/skills/ml-tooling-dev/scripts/mlflow_query.py +252 -0
  36. package/teams/fhr-ai-team/skills/ml-tooling-dev/scripts/mongo_predictor.py +352 -0
  37. package/teams/fhr-ai-team/skills/naming-conventions-reviewer/SKILL.md +230 -0
  38. package/teams/fhr-ai-team/skills/naming-conventions-reviewer/references/dataset-naming.md +190 -0
  39. package/teams/fhr-ai-team/skills/naming-conventions-reviewer/references/domain-vocabulary.md +447 -0
  40. package/teams/fhr-ai-team/skills/naming-conventions-reviewer/references/repo-dependency-graph.md +264 -0
  41. package/teams/fhr-ai-team/skills/planning/SKILL.md +138 -0
  42. package/teams/fhr-ai-team/skills/pr-description/SKILL.md +94 -0
  43. package/teams/snpd/skills/code-review-github/SKILL.md +475 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groupby/ai-dev",
3
- "version": "0.5.5",
3
+ "version": "0.5.8",
4
4
  "description": "Interactive installer for Rezolve Ai development content",
5
5
  "type": "module",
6
6
  "bin": {
@@ -0,0 +1,22 @@
1
+ # Jira Ticket Creator
2
+
3
+ Creates well-structured Jira epics, stories, and sub-tasks from product and
4
+ technical specifications using the Atlassian MCP connector.
5
+
6
+ ## What it does
7
+ - Reads product and/or technical specs from Confluence
8
+ - Plans Epics → Stories → Sub-tasks hierarchy
9
+ - Previews all ticket content for approval before creating anything in Jira
10
+ - Creates tickets with correct parent relationships and team assignments
11
+
12
+ ## Prerequisites
13
+ - Atlassian MCP connector connected
14
+ - Write access to the target Jira project
15
+
16
+ ## Trigger phrases
17
+ - "Create Jira tickets from this spec"
18
+ - "Break this PRD into epics and stories"
19
+ - "Generate Jira tickets from this Confluence page"
20
+
21
+ ## Team
22
+ OOF
@@ -0,0 +1,266 @@
1
+ ---
2
+ name: jira-ticket-creator
3
+ description: Create Jira epics, stories and sub-tasks from product and technical specifications. Use this skill whenever a user asks to create epics, stories, sub-tasks, or tickets in Jira from a spec, PRD, product specification, technical specification, or Confluence page. Also trigger when a user says things like "break this spec into epics", "create Jira tickets from this document", "plan this initiative into stories", "generate epics for this project", or any request involving turning requirements or specifications into structured Jira work items. Requires the Atlassian MCP connector.
4
+ ---
5
+
6
+ # Jira Ticket Creator
7
+
8
+ Creates well-structured Jira epics, stories and sub-tasks from product and technical specifications, using the Atlassian MCP connector.
9
+
10
+ ## Prerequisites
11
+
12
+ - **Atlassian MCP connector** must be connected. If not connected, prompt the user to connect it before proceeding.
13
+ - The user must have write access to the target Jira project.
14
+
15
+ ---
16
+
17
+ ## Configuration Parameters
18
+
19
+ Collect ALL mandatory parameters before creating any tickets. Present them clearly and confirm with the user before proceeding.
20
+
21
+ ### Mandatory Parameters
22
+
23
+ | Parameter | Description | Validation |
24
+ |---|---|---|
25
+ | **Jira Team** | The Jira team to assign to ALL tickets. The user MUST choose one of the two fixed options below. | Required. Present as a two-choice selection. Do not advance until the user selects a team. |
26
+ | **Parent** | The Jira initiative key that all epics will be children of (e.g. `BD-7711`). | Required. Must be a valid Jira issue key. Do not advance until provided. |
27
+ | **Product Specification** | A Confluence page URL containing the product spec / PRD. | Required. Must be a valid Confluence URL. Do not advance until provided. |
28
+
29
+ **Jira Team options** (offer these two as selectable choices — do NOT ask the user to type a free-text team name):
30
+
31
+ | Team name | Team ID (`customfield_10700` value) |
32
+ |---|---|
33
+ | **OOF Mobile Solution Team** | `b3f517d4-c4f8-4144-8920-b762ec5a033b` |
34
+ | **OOF Application Solution Team** | `9817d9ca-6170-48e8-9e98-1aeb7c81daa5` |
35
+
36
+ ### Optional Parameters
37
+
38
+ | Parameter | Description | Default |
39
+ |---|---|---|
40
+ | **Technical Specification** | A Confluence page URL containing the technical spec. | None — if not supplied, generate tickets from the product spec only. |
41
+ | **Epic Number** | Maximum number of epics to produce. | LLM decides based on the scope of the specification. |
42
+ | **Ticket Style** | A URL pointing to a Confluence page with guidelines for how to write/format tickets. Always offer the user the choice to accept the default page or enter a new URL. | `https://rezolvetech.atlassian.net/wiki/spaces/CPST/pages/5303500826/Definition+of+user+story+acceptance+criteria` |
43
+ | **Sub Tasks** | Whether to create sub-tasks under each story. `yes` or `no`. | `no` — do not create sub-tasks unless explicitly set to `yes`. |
44
+
45
+ ---
46
+
47
+ ## Workflow
48
+
49
+ ### Step 1 — Collect and Confirm Configuration
50
+
51
+ **Always ask the user for the configuration values interactively before doing anything else.** Go through the parameters **one at a time, in order**. For each parameter:
52
+
53
+ - State the parameter name and a short description.
54
+ - Show its **default value** (or `None` / `LLM decides` where there is no fixed default).
55
+ - Offer the user the choice to **accept the default** or **enter a new value**. Use interactive options where possible (e.g. an "Accept default" choice alongside a free-text input).
56
+ - **For mandatory parameters (Jira Team, Parent, Product Specification), you MUST NOT advance to the next parameter until the user supplies a value.** If the user leaves it blank, skips, or gives an empty answer, re-ask the SAME parameter and keep asking until a value is provided.
57
+ - For **Jira Team**, present the two fixed options (**OOF Mobile Solution Team** and **OOF Application Solution Team**) as a selectable choice. Do NOT accept or ask for a free-text team name. Map the chosen team to its ID for the `customfield_10700` field.
58
+ - For **Ticket Style**, always present an explicit choice to **accept the default Confluence page** or **enter a new ticket style URL**.
59
+
60
+ Use a prompt along these lines, asking for one value at a time:
61
+
62
+ > Let's set up the configuration. For each item, reply **"default"** to accept the shown default, or type a new value.
63
+ >
64
+ > | # | Parameter | Mandatory | Default value |
65
+ > |---|---|---|---|
66
+ > | 1 | **Jira Team** | Yes | None — choose **OOF Mobile Solution Team** or **OOF Application Solution Team** |
67
+ > | 2 | **Parent** | Yes | None — please provide (e.g. `BD-7711`) |
68
+ > | 3 | **Product Specification** | Yes | None — please provide a Confluence URL |
69
+ > | 4 | **Technical Specification** | No | None (skipped if blank) |
70
+ > | 5 | **Epic Number** | No | LLM decides based on spec scope |
71
+ > | 6 | **Ticket Style** | No | `https://rezolvetech.atlassian.net/wiki/spaces/CPST/pages/5303500826/Definition+of+user+story+acceptance+criteria` |
72
+ > | 7 | **Sub Tasks** | No | `no` |
73
+
74
+ Once all values are collected, **display a summary table of the final configuration** — indicating for each parameter whether the default was accepted or a custom value was entered — and ask the user to confirm before proceeding.
75
+
76
+ ### Step 2 — Read the Specifications
77
+
78
+ Use the Atlassian MCP connector to read the Confluence pages:
79
+
80
+ 1. **Read the Product Specification** from the supplied Confluence URL. This is the primary source of requirements.
81
+ 2. **Read the Technical Specification** (if supplied) from the Confluence URL. This supplements the product spec with implementation details.
82
+ 3. **Read the Ticket Style guide** from the Ticket Style URL. This defines how to format epic descriptions, story titles, acceptance criteria, and other ticket fields.
83
+
84
+ If any page cannot be read, inform the user and ask for a corrected URL.
85
+
86
+ ### Step 3 — Jira Field Reference
87
+
88
+ Use the following Jira field IDs and exact payload formats when creating tickets in the BD project. The `parent` field MUST be passed as an object (`{ "key": "..." }`), never as a bare string — passing a string is the usual cause of "can't find / invalid parent field" errors.
89
+
90
+ 1. **Team field** — custom field `customfield_10700` (Atlassian Team field type). It is **mandatory** on every ticket. Set it to the **ID** of the configured **Jira Team** as a **bare string**, e.g. `"customfield_10700": "b3f517d4-c4f8-4144-8920-b762ec5a033b"`. Use the ID, never the team name. **Do NOT wrap the ID in an object** (e.g. `{ "id": "..." }`) — although the field reads back as an object, on write the API rejects the object form with `Team id 'JsonData{data={id=...}}' is not valid`. Pass the raw ID string only:
91
+ - **OOF Mobile Solution Team** → `b3f517d4-c4f8-4144-8920-b762ec5a033b`
92
+ - **OOF Application Solution Team** → `9817d9ca-6170-48e8-9e98-1aeb7c81daa5`
93
+ 2. **Epic → parent initiative** — standard `parent` field: `"parent": { "key": "BD-7711" }` (substitute the configured **Parent** initiative key).
94
+ 3. **Story → parent epic** — standard `parent` field set to the epic's key: `"parent": { "key": "<EPIC-KEY>" }`.
95
+ 4. **Sub-task → parent story** — standard `parent` field: `"parent": { "key": "<STORY-KEY>" }`.
96
+
97
+ All ticket content must be derived exclusively from the Product Specification and Technical Specification provided by the user.
98
+
99
+ ### Step 4 — Plan the Epics and Stories
100
+
101
+ Based on the specifications and ticket style guide, plan the breakdown:
102
+
103
+ 1. **Identify logical epic groupings** from the product spec. Each epic should represent a coherent feature area or workstream.
104
+ 2. If **Epic Number** is set, constrain to that maximum. If not set, choose the number that best represents the natural groupings in the spec.
105
+ 3. For each epic, identify the user stories needed. Stories should be independently deliverable increments of work.
106
+ 4. If **Sub Tasks** is `yes`, further decompose each story into sub-tasks (implementation steps, testing, etc.).
107
+
108
+ **Present the full plan to the user as a high-level tree for initial structural review:**
109
+
110
+ ```
111
+ Epic 1: [Title]
112
+ ├── Story 1.1: [Title]
113
+ ├── Story 1.2: [Title]
114
+ └── Story 1.3: [Title]
115
+
116
+ Epic 2: [Title]
117
+ ├── Story 2.1: [Title]
118
+ └── Story 2.2: [Title]
119
+ ...
120
+ ```
121
+
122
+ Ask the user: **"Does this structure look right? Should I add, remove, merge, or split any epics or stories before I draft the full ticket content?"**
123
+
124
+ Wait for approval or iterate on the structure until the user is satisfied.
125
+
126
+ ### Step 5 — Preview Full Ticket Content
127
+
128
+ **CRITICAL: Do NOT create any tickets in Jira until the user explicitly approves the content in this step.**
129
+
130
+ Once the structure is approved, draft the **complete content** for every ticket and present it to the user for review. Show each ticket exactly as it will be created, including all fields:
131
+
132
+ #### For each Epic, show:
133
+
134
+ ```
135
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
136
+ EPIC: [Title]
137
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
138
+ Type: Epic
139
+ Team: [configured team]
140
+ Parent: [configured initiative key]
141
+ Summary: [epic title]
142
+ Description:
143
+ 📄 Product Spec: [Confluence URL]
144
+ 📄 Tech Spec: [Confluence URL or N/A]
145
+
146
+ [Full epic description per Ticket Style guide]
147
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
148
+ ```
149
+
150
+ #### For each Story, show:
151
+
152
+ ```
153
+ ──────────────────────────────────────
154
+ STORY under [Epic Title]: [Story Title]
155
+ ──────────────────────────────────────
156
+ Type: Story
157
+ Team: [configured team]
158
+ Epic: [parent epic title]
159
+ Summary: [story title]
160
+ Description:
161
+ 📄 Product Spec: [Confluence URL]
162
+ 📄 Tech Spec: [Confluence URL or N/A]
163
+
164
+ [Full story description per Ticket Style guide]
165
+
166
+ Acceptance Criteria:
167
+ [Full acceptance criteria per Ticket Style guide]
168
+ ──────────────────────────────────────
169
+ ```
170
+
171
+ #### For each Sub-Task (if Sub Tasks = yes), show:
172
+
173
+ ```
174
+ · SUB-TASK under [Story Title]: [Sub-task Title]
175
+ Type: Sub-task
176
+ Team: [configured team]
177
+ Parent: [parent story title]
178
+ Summary: [sub-task title]
179
+ Description: [sub-task details]
180
+ ```
181
+
182
+ After presenting ALL ticket content, ask the user:
183
+
184
+ > **"Here is the full content for all tickets I'm about to create. Please review and let me know:**
185
+ > - **Approve** — create all tickets as shown
186
+ > - **Edit** — tell me which tickets to change and what to modify
187
+ > - **Cancel** — abort without creating anything"
188
+
189
+ **Do NOT proceed to Step 6 until the user explicitly says to approve / go ahead / create.** If the user requests edits, make the changes, re-display the affected tickets, and ask for approval again. Repeat until approved.
190
+
191
+ ### Step 6 — Create Tickets in Jira
192
+
193
+ **Only execute this step after the user has explicitly approved the ticket content in Step 5.**
194
+
195
+ Use the Atlassian MCP connector to create the tickets. Follow this order:
196
+
197
+ #### 6a. Create Epics
198
+
199
+ For each epic, create it using the exact content approved in Step 5:
200
+
201
+ - **Issue Type**: Epic
202
+ - **Summary**: As approved
203
+ - **Description**: As approved — Product Spec link at top, Tech Spec link if supplied, full description per Ticket Style
204
+ - **Team**: Set the `customfield_10700` field to the **ID** of the configured Jira Team (mandatory)
205
+ - **Parent**: Set via the standard `parent` field as an object — `"parent": { "key": "<INITIATIVE-KEY>" }` (the user-supplied initiative key)
206
+
207
+ #### 6b. Create Stories
208
+
209
+ For each story, create it using the exact content approved in Step 5:
210
+
211
+ - **Issue Type**: Story
212
+ - **Summary**: As approved
213
+ - **Description**: As approved — Product Spec link at top, Tech Spec link if supplied, acceptance criteria and context per Ticket Style
214
+ - **Team**: Same team as the epics, set via `customfield_10700` to the selected team's ID (mandatory)
215
+ - **Parent**: Set via the standard `parent` field as an object — `"parent": { "key": "<EPIC-KEY>" }` (the epic created in step 6a)
216
+
217
+ #### 6c. Create Sub-Tasks (only if Sub Tasks = yes)
218
+
219
+ For each sub-task, create it using the exact content approved in Step 5:
220
+
221
+ - **Issue Type**: Sub-task
222
+ - **Summary**: As approved
223
+ - **Description**: As approved
224
+ - **Team**: Same team as the epics, set via `customfield_10700` to the selected team's ID (mandatory)
225
+ - **Parent**: Set via the standard `parent` field as an object — `"parent": { "key": "<STORY-KEY>" }` (the parent story)
226
+
227
+ ### Step 7 — Report Results
228
+
229
+ After all tickets are created, present a summary:
230
+
231
+ 1. A table of all created tickets with their keys, titles, types, and parent relationships
232
+ 2. Direct links to each ticket
233
+ 3. A link to the parent initiative showing the new epics
234
+ 4. Any tickets that failed to create, with error details
235
+
236
+ ---
237
+
238
+ ## Ticket Content Rules
239
+
240
+ These rules apply to ALL tickets (epics, stories, and sub-tasks):
241
+
242
+ 1. **Jira Team field is mandatory.** Set it on every ticket (epic, story, sub-task) using the **ID** of the team the user selected (`OOF Mobile Solution Team` → `b3f517d4-c4f8-4144-8920-b762ec5a033b`, `OOF Application Solution Team` → `9817d9ca-6170-48e8-9e98-1aeb7c81daa5`) via `customfield_10700`.
243
+ 2. **Product Specification link** must appear at the top of every story description and every epic description. Format as a clickable Confluence link.
244
+ 3. **Technical Specification link** (if provided) must appear directly below the product spec link in every description.
245
+ 4. **All epics must be children of the parent initiative.** Use the Jira parent field, not just a link.
246
+ 5. **Follow the Ticket Style guide** for all content — titles, descriptions, acceptance criteria, and formatting.
247
+ 6. **Respect the Epic Number** constraint. If a max is set, do not exceed it. Consolidate related work into fewer epics if needed.
248
+
249
+ ---
250
+
251
+ ## Error Handling
252
+
253
+ - If the Atlassian MCP connector is not connected, stop and ask the user to connect it.
254
+ - If a Confluence page cannot be read, report the error and ask for a corrected URL.
255
+ - If a ticket fails to create, log the error, continue with remaining tickets, and report all failures at the end.
256
+ - If the selected team's ID is rejected by Jira, report this and confirm the user's team choice before retrying.
257
+ - If the parent initiative key is invalid, report this and ask for correction.
258
+
259
+ ---
260
+
261
+ ## Tips for Best Results
262
+
263
+ - Provide a detailed product specification — the more complete the spec, the better the epic/story breakdown.
264
+ - Adding a technical specification helps generate more accurate implementation-focused stories.
265
+ - Use the Epic Number parameter to control granularity — fewer epics means broader groupings, more means finer-grained.
266
+ - Review the structure in Step 4 and the full ticket content in Step 5 carefully — nothing is created in Jira until you explicitly approve.
@@ -0,0 +1,31 @@
1
+ ## Summary
2
+
3
+ <!-- What problem does this solve? Link the ticket (XO-XXXX / EB-XXXX) if there is one. Brief summary of the approach. -->
4
+
5
+ ## Scope
6
+
7
+ <!-- What is included in this PR? Delete this section when the scope is self-evident from the title. -->
8
+
9
+ ## Behavior
10
+
11
+ <!-- Describe the observable outcomes of this change, not the implementation details.
12
+ What does the system do differently after this PR? State it in terms a reviewer can verify:
13
+ - Given X, the system now does Y (previously: Z)
14
+ - Config key `foo.bar` controls ... ; default is ...
15
+ For design decisions, explain what was chosen and why the alternatives were rejected. -->
16
+
17
+ ## Wiring
18
+
19
+ <!-- How is the new code connected to the rest of the system? Which callers, configs, or entry points are affected? Delete this section for self-contained changes. -->
20
+
21
+ ## Tests
22
+
23
+ <!-- How was this tested? List test commands, key scenarios covered, or link CI results. -->
24
+
25
+ ## How to run
26
+
27
+ <!-- Steps to run or test this locally, if applicable. Delete this section for changes that don't need manual verification. -->
28
+
29
+ ## Backward compatibility
30
+
31
+ <!-- Does this change any public API, config key, data format, or pipeline interface? If yes, explain the migration path. If fully backward-compatible, write "No breaking changes". Delete this section for internal-only changes. -->
@@ -0,0 +1,7 @@
1
+ ## What changed
2
+
3
+ <!-- One or two sentences: what changed and why. -->
4
+
5
+ ## Notes for reviewer
6
+
7
+ <!-- Optional: anything non-obvious about the change, or "None". -->
@@ -0,0 +1,24 @@
1
+ # Custom instructions for GitHub Copilot
2
+
3
+ When performing a code review, please ensure the following:
4
+
5
+ ## Crownpeak AI Team Conventions
6
+ - Search the codebase for existing utilities before creating new ones.
7
+ - Check shared libraries: earlybirds_commons, torch_toolbox, item-toolbox, nlp-toolbox.
8
+ - Use "item" not "product", "encodings" not "embeddings".
9
+ - JSON/YAML config keys: camelCase.
10
+ - Parquet columns: camelCase.
11
+ - GCS paths: kebab-case.
12
+ - Strategy IDs: kebab-case.
13
+ - Docker images: kebab-case.
14
+ - Parquet column labels: class-level attributes (_label pattern), not module-level constants.
15
+ - Config classes: use standard suffixes (*Config, *ModelConfig, *BatchConfig, etc.).
16
+ - No placeholders, no "TBD", no vague error handling.
17
+
18
+ ## Commit Messages - Use the following guidelines
19
+ - Use the imperative mood in the subject line (e.g., "Fix bug" instead of "Fixed bug").
20
+ - Start with a capital letter.
21
+ - Do not end the subject line with a period.
22
+ - Use the body to explain what and why vs. how.
23
+ - Use bullet points for multiple changes if necessary.
24
+ - Keep the subject line under 50 characters.
@@ -0,0 +1,23 @@
1
+ ---
2
+ applyTo: "**/*.py"
3
+ ---
4
+
5
+ # Python Coding Style
6
+
7
+ - Use PEP 8 style guide for Python code.
8
+ - Don't write docstrings for all public modules, classes, functions, and methods.
9
+ - Use meaningful variable and function names.
10
+ - Use snake_case for variable and function names.
11
+ - Use CamelCase for class names.
12
+ - Use type annotations for function parameters and return types.
13
+ - Add '_opt' at the end of the function name for optional parameters and at the end of variable name for optional variables.
14
+ - Use double quotes for string literals. Use single quotes for string literals only when the string contains double quotes.
15
+ - Use triple quotes for multi-line strings. Use implicit string concatenation inside parentheses when joining shorter fragments across lines.
16
+ - Use f-strings for string formatting. Avoid using the format() method or % operator for string formatting.
17
+ - Use list comprehensions and generator expressions for creating lists and iterators. Avoid using map() and filter() functions.
18
+ - Use `with open(...) as file_obj:` for file I/O operations. Avoid manual `close()` calls when a context manager can manage the file handle.
19
+ - Use context managers for resource management when available. Avoid using `try/finally` for resource cleanup when a context manager can express the same behavior more clearly.
20
+ - Use exceptions for error handling. Avoid using return codes for error handling.
21
+ - Use pytest for functional testing. Avoid using other testing frameworks unless necessary.
22
+ - If a dict key is used in several places, use a variable for the key name. Use a constant for the key name if it is used in several modules. The variable name should be in snake_case and start with an underscore.
23
+ - Use single responsibility principle for SOLID code.
@@ -0,0 +1,21 @@
1
+ <!--
2
+ Pick a template:
3
+ - Small change (bug fix, config, dependency bump, typo): use light template
4
+ -> append ?template=light.md to the PR creation URL
5
+ - Feature, refactor, or architectural change: use full template
6
+ -> append ?template=full.md to the PR creation URL
7
+
8
+ Or fill in the default below.
9
+ -->
10
+
11
+ ## Why
12
+
13
+ <!-- What problem does this solve? Link the ticket (XO-XXXX / EB-XXXX) if there is one. -->
14
+
15
+ ## What
16
+
17
+ <!-- Describe the approach. For non-trivial changes, explain the design and key decisions. -->
18
+
19
+ ## Tests
20
+
21
+ <!-- How was this tested? List test commands, key scenarios covered, or link CI results. -->
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Brainstorm a new feature or design with codebase context. Discovers AI team repos, searches existing code, gathers requirements interactively.
3
+ ---
4
+
5
+ Invoke the ai.pierre:brainstorming skill.
6
+
7
+ $ARGUMENTS
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Plan and configure a test for an algo pipeline. Interactive 3-stage flow to select pipeline, gather config, and generate Kubeflow JSON.
3
+ ---
4
+
5
+ Invoke the ai.pierre:algo-test-planning skill.
6
+
7
+ $ARGUMENTS
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Plan an implementation with mandatory codebase search and code reuse. Produces TDD-based bite-sized tasks with exact file paths.
3
+ ---
4
+
5
+ Invoke the ai.pierre:planning skill.
6
+
7
+ Implement $ARGUMENTS. IMPORTANT: First search the codebase for existing utilities, scripts, and patterns that do similar things. Reuse them. Do not create new abstractions without showing me what already exists.
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Generating a PR description from the current branch diff
3
+ ---
4
+
5
+ Invoke the ai.pierre:pr-description skill.
6
+
7
+ Generate a PR description for the current branch. $ARGUMENTS
@@ -0,0 +1,7 @@
1
+ ---
2
+ description: Run tests - local pytest, Kubeflow pipeline e2e, or MLflow model validation. Uses ml-tooling-dev for pipeline operations.
3
+ ---
4
+
5
+ Invoke the ai.pierre:e2e-testing skill.
6
+
7
+ $ARGUMENTS
@@ -0,0 +1,55 @@
1
+ # ai.pierre - Agent Instructions
2
+
3
+ This file provides instructions for AI coding agents (OpenCode, Copilot, and others) working with Crownpeak AI team repositories.
4
+
5
+ ## Skills Available
6
+
7
+ The `skills/` directory contains the following skills. Detect which skill applies based on the user's request and invoke it automatically.
8
+
9
+ ### Workflow Skills
10
+
11
+ | Skill | Directory | Trigger |
12
+ |-------|-----------|---------|
13
+ | Brainstorming | `skills/brainstorming/` | User wants to design, explore, or brainstorm a feature |
14
+ | Planning | `skills/planning/` | User wants to plan an implementation or break down tasks |
15
+ | Algo Test Planning | `skills/algo-test-planning/` | User wants to test a Kubeflow pipeline |
16
+ | E2E Testing | `skills/e2e-testing/` | User wants to run tests (local, pipeline, or model validation) |
17
+ | Grill Me | `skills/grill-me/` | User wants to stress-test a plan or design through rigorous questioning |
18
+
19
+ ### Domain Skills
20
+
21
+ | Skill | Directory | Trigger |
22
+ |-------|-----------|---------|
23
+ | ML Tooling Dev | `skills/ml-tooling-dev/` | User works with Kubeflow, MLflow, or MongoDB |
24
+ | Naming Conventions | `skills/naming-conventions-reviewer/` | User writes or reviews code in any ML repo |
25
+
26
+ ## Automatic Skill Selection
27
+
28
+ The user does **not** need to explicitly request skills. Determine the applicable skill from the user's natural language request:
29
+
30
+ - "Design a feature" / "How should we approach..." -> brainstorming
31
+ - "Break this down" / "Plan the implementation" -> planning
32
+ - "Test the pipeline" / "Run a test for..." -> algo-test-planning or e2e-testing
33
+ - "Check the Kubeflow run" / "Debug this job" -> ml-tooling-dev
34
+ - "Grill me" / "Stress-test this plan" / "Challenge my design" -> grill-me
35
+ - "Review this code" / "Is this name right?" -> naming-conventions-reviewer
36
+
37
+ ## Team Context
38
+
39
+ ### Repository Naming
40
+ - `algo.*` - ML algorithm projects (training, inference, evaluation)
41
+ - `algo.*-ml` - ML model training/fine-tuning (run on Kubeflow)
42
+ - `ai.*` - AI-powered microservices (FastAPI, Streamlit)
43
+ - `*-toolbox` - Shared Python libraries
44
+ - `attraqt-kubeflow-*` - Kubeflow pipeline configs and definitions
45
+ - `ebap-*` - Early Birds AI Platform infrastructure
46
+
47
+ ### Shared Libraries
48
+ Before writing new utilities, check:
49
+ - `earlybirds_commons`, `torch_toolbox`, `item-toolbox`, `nlp-toolbox`, `eb_tensorflow`
50
+
51
+ ### Core Rules
52
+ 1. Search the codebase for existing implementations before proposing new code
53
+ 2. Reuse shared library utilities; do not duplicate
54
+ 3. Follow naming conventions (see `skills/naming-conventions-reviewer/`)
55
+ 4. No placeholders, no "TBD", no vague instructions in plans or designs
@@ -0,0 +1,52 @@
1
+ # ai.pierre - Crownpeak AI Team Engineering Skills
2
+
3
+ This plugin provides engineering skills and slash commands for the Crownpeak AI team's ML development workflow.
4
+
5
+ ## Available Commands
6
+
7
+ | Command | When to use |
8
+ |---------|-------------|
9
+ | `/brainstorm` | Designing a new feature, exploring architecture decisions, or evaluating approaches |
10
+ | `/pr-description` | Generating a PR description from the current branch diff |
11
+ | `/plan` | Breaking down an approved design into implementation tasks |
12
+ | `/plan-algo-tests` | Configuring and planning a Kubeflow pipeline test run |
13
+ | `/test` | Running local tests, launching pipeline e2e tests, or validating model outputs |
14
+
15
+ ## Auto-Routing Rules
16
+
17
+ When working in any Crownpeak AI repo, apply these skills automatically:
18
+
19
+ - **Writing or reviewing code** in any repo -> invoke `ai.pierre:naming-conventions-reviewer` to validate names
20
+ - **Working with Kubeflow, MLflow, or MongoDB** -> invoke `ai.pierre:ml-tooling-dev` for operations and debugging
21
+ - **Brainstorming or designing** -> invoke `ai.pierre:brainstorming` for codebase-aware design
22
+ - **Planning implementation** -> invoke `ai.pierre:planning` for task breakdown
23
+ - **Testing pipelines** -> invoke `ai.pierre:algo-test-planning` for config generation, `ai.pierre:e2e-testing` for execution
24
+ - **Stress-testing a plan or design** -> invoke `ai.pierre:grill-me` to interrogate decisions branch by branch
25
+ - **Creating a PR or asked to write a PR description** -> invoke `ai.pierre:pr-description` to generate from the diff
26
+
27
+ ## Team Repo Structure
28
+
29
+ | Pattern | Purpose | Examples |
30
+ |---------|---------|---------|
31
+ | `algo.*` | ML algorithm projects | `algo.search`, `algo.clip`, `algo.tagging` |
32
+ | `algo.*-ml` | ML training (Kubeflow) | `algo.search-ml`, `algo.clip-ml` |
33
+ | `ai.*` | AI microservices | `ai.tagging-service`, `ai.guardrails-service` |
34
+ | `*-toolbox` | Shared Python libraries | `pytorch-toolbox`, `nlp-toolbox`, `item-toolbox` |
35
+ | `attraqt-kubeflow-*` | Kubeflow infra | `attraqt-kubeflow-configs`, `attraqt-kubeflow-pipelines` |
36
+ | `ebap-*` | AI Platform infra | `ebap-argo-app`, `ebap-schema` |
37
+
38
+ ## Shared Libraries
39
+
40
+ Always check these before writing new utilities:
41
+ - `earlybirds_commons` - shared utilities and configurations
42
+ - `torch_toolbox` - PyTorch model training/inference
43
+ - `item-toolbox` - e-commerce item data utilities
44
+ - `nlp-toolbox` - text tokenization and NLP
45
+ - `eb_tensorflow` - TensorFlow model utilities
46
+
47
+ ## Non-Negotiable Principles
48
+
49
+ 1. **Search before creating.** Always search the codebase for existing implementations before proposing new code.
50
+ 2. **Reuse before writing.** If a utility exists in a shared library, use it.
51
+ 3. **Name correctly.** All names must follow the conventions enforced by `naming-conventions-reviewer`.
52
+ 4. **No placeholders.** Every plan, design, and implementation must be complete and precise.
@@ -0,0 +1,51 @@
1
+ # ai.agent-skills
2
+
3
+ Engineering skills for Crownpeak AI team coding agents. Plugin name: **ai.pierre**.
4
+
5
+ Provides codebase-aware brainstorming, implementation planning with mandatory code reuse, interactive Kubeflow pipeline test configuration, and cross-repo naming convention enforcement.
6
+
7
+ **New to Claude Code?** Start with the [onboarding guide](docs/onboarding.md) after installing.
8
+
9
+ ## Quick Install
10
+
11
+ | Tool | Command |
12
+ |------|---------|
13
+ | **Claude Code** | `/plugin install ai.pierre` ([setup guide](docs/claude-code-setup.md)) |
14
+ | **OpenCode** | Clone repo, open in OpenCode ([setup guide](docs/opencode-setup.md)) |
15
+ | **GitHub Copilot** | Copy skills to `.github/skills/` ([setup guide](docs/copilot-setup.md)) |
16
+
17
+ ## Commands
18
+
19
+ | Command | Description |
20
+ |---------|-------------|
21
+ | `/brainstorm` | Codebase-aware brainstorming with dynamic AI team repo discovery via `gh` |
22
+ | `/plan` | Implementation planning with mandatory codebase search and code reuse |
23
+ | `/plan-algo-tests` | Interactive 3-stage flow: pipeline selection, config gathering, Kubeflow JSON generation |
24
+ | `/test` | Local pytest, Kubeflow pipeline e2e testing, or MLflow model validation |
25
+
26
+ ## Skills
27
+
28
+ | Skill | Description |
29
+ |-------|-------------|
30
+ | `brainstorming` | Design exploration with repo discovery, codebase search, interactive requirements gathering |
31
+ | `planning` | TDD-based task breakdown with cross-repo dependency mapping |
32
+ | `algo-test-planning` | Pipeline test config generation with 3-stage interactive flow |
33
+ | `e2e-testing` | Local, pipeline, and model validation testing workflows |
34
+ | `ml-tooling-dev` | Kubeflow, MLflow, and MongoDB dev environment management |
35
+ | `grill-me` | Stress-test a plan or design through relentless questioning, resolving each branch of the decision tree |
36
+ | `naming-conventions-reviewer` | Cross-repo naming convention enforcement for ML repositories |
37
+
38
+ ## Copilot Instructions
39
+
40
+ A reference [`copilot-instructions.md`](.github/copilot-instructions.md) is included for GitHub Copilot code reviews. It covers Python coding style, Crownpeak AI team naming conventions, and commit message standards. Copy it into your project's `.github/` directory to enable Copilot-assisted reviews. See the [Copilot setup guide](docs/copilot-setup.md) for details.
41
+
42
+ ## Repository Structure
43
+
44
+ ```
45
+ .claude/commands/ Slash commands (thin wrappers invoking skills)
46
+ .github/ Reference copilot-instructions.md for code reviews
47
+ skills/ Skill definitions with SKILL.md, references/, and scripts/
48
+ docs/ Setup guides for Claude Code, OpenCode, and Copilot
49
+ CLAUDE.md Agent instructions for Claude Code
50
+ AGENTS.md Agent instructions for OpenCode and Copilot
51
+ ```