ai-engineering-starter-kit 0.4.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.
@@ -0,0 +1,602 @@
1
+ ---
2
+ name: ppp-cloud
3
+ version: 0.4.0
4
+ description: "Plan. Patch. Prove for autonomous cloud agents. Use for clear, bounded engineering tasks where the agent should inspect code, plan, prove, patch, validate, review, and open a draft PR or stop with a useful blocker."
5
+ ---
6
+
7
+ # Plan. Patch. Prove — Cloud Agent Mode
8
+
9
+ Use this skill when running as an autonomous coding agent, such as GitHub Copilot Cloud Agent.
10
+
11
+ This is the non-interactive version of PPP.
12
+
13
+ Core loop:
14
+
15
+ ```text
16
+ Inspect → Decide → Plan → Prove → Patch → Validate → Review → Draft PR
17
+ ```
18
+
19
+ The goal is to produce one focused draft PR for a clear, bounded, verifiable task — or stop with a useful blocker when the task is unsafe or unclear.
20
+
21
+ ## Cloud Agent principle
22
+
23
+ Autonomous agents may accelerate implementation, but they must not make high-risk product, architecture, security, auth, data, migration, tenancy, billing, or public API decisions without human input.
24
+
25
+ Prefer a safe stop over confident guessing.
26
+
27
+ <!-- Similar section in ppp — keep core rules consistent -->
28
+ ## Token discipline
29
+
30
+ Be concise.
31
+
32
+ - Inspect only relevant files.
33
+ - Summarise instead of pasting large code/logs.
34
+ - Prefer file paths, decisions, risks, checks run, and next actions.
35
+ - Do not restate large specs or issue bodies.
36
+ - Do not create separate task artifacts unless repo instructions require them.
37
+ - Keep the PR body useful but not verbose.
38
+
39
+ ## Suitable tasks
40
+
41
+ PPP Cloud is suitable when the task is:
42
+
43
+ - clear
44
+ - bounded
45
+ - expected to fit one focused PR
46
+ - low or medium risk
47
+ - testable or otherwise verifiable
48
+ - aligned with existing repo patterns
49
+ - not dependent on repeated human back-and-forth
50
+
51
+ Good examples:
52
+
53
+ - fix a clearly described bug
54
+ - add or update tests
55
+ - implement a small validation rule
56
+ - add an empty/loading/error state
57
+ - make a small UI behaviour change following existing patterns
58
+ - update docs
59
+ - make a small refactor with tests
60
+ - add coverage around existing behaviour
61
+
62
+ ## Unsuitable tasks
63
+
64
+ Do not implement directly if the task is broad, ambiguous, high risk, or requires a significant decision.
65
+
66
+ Examples:
67
+
68
+ - “build a new analytics dashboard”
69
+ - “add reporting”
70
+ - “improve onboarding”
71
+ - “build the new permissions system”
72
+ - “migrate this service”
73
+ - “redesign this flow”
74
+ - “change how authentication works”
75
+ - “update billing behaviour”
76
+ - “change the public API contract”
77
+
78
+ For unsuitable tasks, stop and return a blocker or recommend splitting into a smaller task.
79
+
80
+ <!-- Similar section in ppp — keep core rules consistent -->
81
+ ## Hard rules
82
+
83
+ - Inspect relevant code before planning or editing.
84
+ - Follow repo guidance and nearby code/test conventions.
85
+ - Do not invent requirements.
86
+ - Do not touch unrelated files.
87
+ - Do not weaken tests or remove validation to make checks pass.
88
+ - Do not claim checks passed unless they actually ran.
89
+ - Do not shortcut required related changes just to keep the diff small.
90
+ - Do not leave related code paths half-updated when correctness requires consistency.
91
+ - Stop after two focused failed fix attempts.
92
+ - Open a draft PR only when the work is coherent and reviewable.
93
+ - If validation is incomplete, the PR must be draft and must clearly state what was not run.
94
+
95
+ <!-- Similar section in ppp — keep core rules consistent -->
96
+ ## Repo guidance
97
+
98
+ Before planning or editing, inspect repo guidance if available:
99
+
100
+ - `.github/copilot-instructions.md`
101
+ - `.github/instructions/**/*.instructions.md`
102
+ - `AGENTS.md`
103
+ - `CONTRIBUTING.md`
104
+ - `README.md`
105
+ - package-specific README files near the changed code
106
+ - `.github/PULL_REQUEST_TEMPLATE.md`
107
+
108
+ Follow repo guidance for:
109
+
110
+ - architecture
111
+ - coding style
112
+ - testing
113
+ - validation commands
114
+ - PR format
115
+ - forbidden areas
116
+ - security/privacy rules
117
+
118
+ If repo guidance conflicts with this skill, follow repo guidance unless it weakens safety, validation, or production readiness.
119
+
120
+ If no repo guidance exists, infer conventions from nearby code and tests.
121
+
122
+ ## 1. Inspect
123
+
124
+ Read the task and inspect relevant code before planning.
125
+
126
+ Identify:
127
+
128
+ - intended behaviour
129
+ - current behaviour, if known
130
+ - relevant files/modules
131
+ - existing patterns to follow
132
+ - test patterns
133
+ - assumptions
134
+ - risks
135
+ - potential blockers
136
+
137
+ Use a codebase inspection table when file paths or modules matter:
138
+
139
+ | Area | File/module | Status | Evidence | Notes |
140
+ |---|---|---|---|---|
141
+
142
+ Statuses:
143
+
144
+ - Confirmed — inspected and exists
145
+ - Inferred — likely, but not inspected
146
+ - Proposed new — does not exist yet and is proposed
147
+ - Missing — expected but not found
148
+
149
+ Do not present inferred paths as confirmed.
150
+
151
+ If relevant code cannot be inspected, stop and report a blocker.
152
+
153
+ ## 2. Decide whether to proceed
154
+
155
+ Before implementation, decide whether to continue, narrow, or stop.
156
+
157
+ ### Continue when
158
+
159
+ Continue without asking when:
160
+
161
+ - the expected behaviour is clear enough;
162
+ - the choice is low-risk;
163
+ - the repo has an existing pattern to follow;
164
+ - the decision is internal implementation detail;
165
+ - the decision is easy to reverse;
166
+ - the change does not affect product semantics, security, data, auth, permissions, migrations, billing, tenancy, or public APIs.
167
+
168
+ When continuing with an assumption, record it in the PR body under “Assumptions”.
169
+
170
+ ### Stop when
171
+
172
+ Stop and report a blocker when the task requires a critical decision that is not answerable from repo context.
173
+
174
+ Critical decisions include:
175
+
176
+ - product behaviour or UX semantics
177
+ - acceptance criteria conflict
178
+ - public API contract
179
+ - data model or migration
180
+ - auth/security/permissions
181
+ - privacy or compliance behaviour
182
+ - tenancy or billing behaviour
183
+ - architecture or module boundary change
184
+ - destructive or irreversible changes
185
+ - high-risk production behaviour
186
+ - unclear test oracle
187
+
188
+ Use this blocker format:
189
+
190
+ ```md
191
+ ## Blocked — human decision required
192
+
193
+ I stopped because this task requires a decision I should not make autonomously.
194
+
195
+ Decision needed:
196
+ - ...
197
+
198
+ Why it matters:
199
+ - ...
200
+
201
+ Options:
202
+ 1. ...
203
+ 2. ...
204
+ 3. ...
205
+
206
+ Recommended option:
207
+ - ...
208
+
209
+ Files inspected:
210
+ - ...
211
+
212
+ No implementation PR was created because proceeding would require guessing.
213
+ ```
214
+
215
+ ### Narrow when
216
+
217
+ If the task is too large but has an obvious first safe increment, implement only that increment if it is valuable and clearly within scope.
218
+
219
+ Examples:
220
+
221
+ - create a dashboard shell but not full analytics logic;
222
+ - add parser tests but not the full editor integration;
223
+ - add validation in one established path but not redesign validation globally.
224
+
225
+ If narrowing, state the narrowed scope in the PR body.
226
+
227
+ ## 3. Plan
228
+
229
+ Create the smallest safe complete plan for the selected task or narrowed scope.
230
+
231
+ Include:
232
+
233
+ - objective
234
+ - files to change
235
+ - tests/checks to add or update
236
+ - validation commands
237
+ - risks
238
+ - explicit non-goals
239
+
240
+ The plan must follow repo conventions, components, styling, architecture, and design patterns.
241
+
242
+ Do not plan unrelated refactors.
243
+
244
+ Do not avoid legitimate required files just to keep the diff small.
245
+
246
+ If the plan reveals the task is not suitable for autonomous implementation, stop and report a blocker.
247
+
248
+ ## 4. Prove
249
+
250
+ Define proof before implementation.
251
+
252
+ Choose exactly one primary proof and up to three supporting checks.
253
+
254
+ The primary proof must directly validate the changed behaviour. Lint/typecheck alone is not sufficient for behavioural changes unless no behavioural proof is practical.
255
+
256
+ Use the lowest-cost proof that gives meaningful confidence:
257
+
258
+ - Static/local sanity: lint, typecheck, build affected package
259
+ - Targeted unit/component test: default for logic and UI behaviour
260
+ - Focused integration/API/contract test: for cross-module or API behaviour
261
+ - E2E/manual workflow: when a real workflow is needed
262
+ - Full suite/expensive checks: only when repo convention or risk requires it
263
+
264
+ Prefer red-green testing where practical.
265
+
266
+ If expensive or environment-heavy checks are not practical, use targeted proof and document the skipped checks in the PR body.
267
+
268
+ ## Automated testing and coverage
269
+
270
+ Inspect whether the affected area has automated tests or CI coverage expectations.
271
+
272
+ If unit tests exist for the affected area or new testable logic is added:
273
+
274
+ - add or update relevant unit tests;
275
+ - match or exceed the coverage standard of surrounding code;
276
+ - if no local standard exists, use 80% new-code unit coverage as a fallback target for testable logic;
277
+ - do not invent coverage numbers.
278
+
279
+ If unit tests are not practical or not applicable:
280
+
281
+ - update the next-best automated validation where appropriate;
282
+ - consider component, integration, API, E2E, snapshot, contract, build, or typecheck validation;
283
+ - explain why unit tests are not being added.
284
+
285
+ Do not write tests that only assert implementation details rather than behaviour.
286
+
287
+ If CI/CD enforces unit coverage, do not open a normal PR that is likely to fail coverage. Add tests, mark the PR as draft, or stop with a blocker if the issue cannot be addressed.
288
+
289
+ ## 5. Patch
290
+
291
+ Implement in small validated loops:
292
+
293
+ ```text
294
+ small change → run proof/check → inspect result → fix → review diff → continue
295
+ ```
296
+
297
+ Rules:
298
+
299
+ - stay within the selected task or narrowed scope;
300
+ - update all related code paths required for correctness;
301
+ - preserve existing behaviour unless the task requires changing it;
302
+ - avoid unrelated refactors and opportunistic cleanup;
303
+ - validate after meaningful changes.
304
+
305
+ If the work becomes larger, riskier, or different from the plan, stop and reassess. If it now requires a critical decision, stop and report a blocker.
306
+
307
+ ## 6. Validate failures
308
+
309
+ If validation fails, stop adding code and diagnose.
310
+
311
+ Classify the failure before fixing:
312
+
313
+ - Implementation bug
314
+ - Test expectation wrong
315
+ - Environment/setup issue
316
+ - Missing dependency
317
+ - Product ambiguity
318
+ - Architecture/design mismatch
319
+ - Unknown
320
+
321
+ Only attempt automatic fixes for implementation bugs or clearly incorrect tests.
322
+
323
+ Maximum automatic fix attempts: 2.
324
+
325
+ For each attempt:
326
+
327
+ 1. reproduce the failure;
328
+ 2. classify it;
329
+ 3. identify the key error;
330
+ 4. inspect the relevant code/test;
331
+ 5. fix one confirmed cause;
332
+ 6. rerun the targeted check.
333
+
334
+ After two failed attempts, stop. Open a draft PR only if the partial work is useful and reviewable; otherwise do not create a PR.
335
+
336
+ Use this failure summary:
337
+
338
+ ```md
339
+ ## Blocked after two focused fix attempts
340
+
341
+ What I tried:
342
+ 1. ...
343
+ 2. ...
344
+
345
+ Current evidence:
346
+ - failing command:
347
+ - key error:
348
+ - likely cause:
349
+ - files touched:
350
+
351
+ Recommended next action:
352
+ Human investigation required.
353
+ ```
354
+
355
+ Do not weaken tests, delete validation, broaden scope, or keep retrying indefinitely.
356
+
357
+ ## 7. Review
358
+
359
+ Before creating a draft PR, review as QA and production reviewer.
360
+
361
+ ### Blocking — must fix or stop before PR
362
+
363
+ - Task is not satisfied
364
+ - Acceptance criteria not covered
365
+ - Required proof/tests missing or failing
366
+ - CI/PR checks likely to fail without explanation
367
+ - Unit/automated coverage requirement not met where applicable
368
+ - Security/privacy/auth/permission risk unresolved
369
+ - Related code paths left inconsistent
370
+ - Unrelated files changed
371
+ - Change cannot be explained clearly
372
+
373
+ ### Should fix before PR if safe and in scope
374
+
375
+ - Edge cases weakly handled
376
+ - Error/loading/empty states incomplete where relevant
377
+ - Existing patterns not followed
378
+ - Accessibility not considered for UI changes
379
+ - Performance risk not considered
380
+ - Tests assert implementation rather than behaviour
381
+ - Unnecessary complexity added
382
+
383
+ If three or more “Should fix” items apply, address them before PR unless they are explicitly documented as follow-ups and the PR is draft.
384
+
385
+ ### Nice to have / follow-up
386
+
387
+ - Additional refactoring
388
+ - Extra docs/comments
389
+ - Broader E2E coverage
390
+ - Non-blocking polish
391
+
392
+ If a blocking item cannot be fixed safely, stop or open a draft PR only if the partial result is valuable and clearly labelled.
393
+
394
+ ## 8. Draft PR
395
+
396
+ Create a draft PR when:
397
+
398
+ - the task or narrowed scope is coherently implemented;
399
+ - the diff is reviewable;
400
+ - validation has been run or limitations are clearly documented;
401
+ - remaining risks are clearly stated.
402
+
403
+ Do not create a PR when:
404
+
405
+ - implementation is incoherent or half-applied;
406
+ - critical behaviour is unknown;
407
+ - auth/security/data/API decisions are unresolved;
408
+ - unrelated files would be included;
409
+ - tests fail and the cause is unknown;
410
+ - the change is likely harmful.
411
+
412
+ ## Ticket reference
413
+
414
+ Use “ticket reference” generically. Jira is one example.
415
+
416
+ Look for a ticket reference in:
417
+
418
+ 1. branch name
419
+ 2. task/ticket text
420
+ 3. recent commit messages if relevant
421
+
422
+ Examples:
423
+
424
+ - Jira: `AEP-2714`, `MONE-61005`
425
+ - Linear: `ENG-123`
426
+ - GitHub issue: `#1234`
427
+
428
+ Do not invent a ticket reference.
429
+
430
+ If none is found, continue without one and state that none was found in the PR body.
431
+
432
+ ## Commit and PR conventions
433
+
434
+ Use repo conventions if present.
435
+
436
+ Fallback commit format with ticket reference:
437
+
438
+ ```text
439
+ <TICKET-REF> <type>(<scope>): <short description>
440
+ ```
441
+
442
+ Fallback PR title with ticket reference:
443
+
444
+ ```text
445
+ [<TICKET-REF>] <type>(<scope>): <short description>
446
+ ```
447
+
448
+ Without a ticket reference:
449
+
450
+ ```text
451
+ <type>(<scope>): <short description>
452
+ ```
453
+
454
+ Types: `feat`, `fix`, `test`, `refactor`, `chore`, `docs`.
455
+
456
+ ## Git safety
457
+
458
+ Before staging or committing:
459
+
460
+ - inspect `git status`;
461
+ - stage only files relevant to this task;
462
+ - do not stage unrelated user changes;
463
+ - if unrelated modified files exist, exclude them and mention them in the PR body;
464
+ - never force-push or amend commits unless explicitly instructed by repo workflow.
465
+
466
+ ## Draft PR body
467
+
468
+ Follow the repo PR template if present.
469
+
470
+ If no template exists, use:
471
+
472
+ ```md
473
+ ## Summary
474
+
475
+ - ...
476
+
477
+ ## Scope
478
+
479
+ Implemented:
480
+ - ...
481
+
482
+ Not included:
483
+ - ...
484
+
485
+ ## Assumptions
486
+
487
+ - ...
488
+
489
+ ## Testing
490
+
491
+ Ran:
492
+ - ...
493
+
494
+ Not run:
495
+ - ...
496
+
497
+ ## Risks / follow-ups
498
+
499
+ - ...
500
+
501
+ ## Review notes
502
+
503
+ - ...
504
+
505
+ ## Blockers, if any
506
+
507
+ - ...
508
+ ```
509
+
510
+ The PR body must clearly state:
511
+
512
+ - what changed
513
+ - what was intentionally not changed
514
+ - assumptions made
515
+ - checks run and results
516
+ - checks not run and why
517
+ - any blockers or human decisions needed
518
+ - whether the PR is ready for review or draft/WIP
519
+
520
+ ## Final response / PR outcome
521
+
522
+ Return one of:
523
+
524
+ ### PR created
525
+
526
+ ```md
527
+ ## Draft PR created
528
+
529
+ PR:
530
+ - <url>
531
+
532
+ Summary:
533
+ - ...
534
+
535
+ Checks run:
536
+ - ...
537
+
538
+ Risks / follow-ups:
539
+ - ...
540
+
541
+ Human review focus:
542
+ - ...
543
+ ```
544
+
545
+ ### Stopped without PR
546
+
547
+ ```md
548
+ ## Stopped — no PR created
549
+
550
+ Reason:
551
+ - ...
552
+
553
+ Decision or help needed:
554
+ - ...
555
+
556
+ Files inspected:
557
+ - ...
558
+
559
+ Evidence:
560
+ - ...
561
+
562
+ Recommended next action:
563
+ - ...
564
+ ```
565
+
566
+ ### Blocked after partial work
567
+
568
+ ```md
569
+ ## Draft PR created with blockers
570
+
571
+ PR:
572
+ - <url>
573
+
574
+ What is complete:
575
+ - ...
576
+
577
+ What is blocked:
578
+ - ...
579
+
580
+ Checks run:
581
+ - ...
582
+
583
+ Human decision needed:
584
+ - ...
585
+ ```
586
+
587
+ ## Stop conditions
588
+
589
+ Stop without implementation or PR if:
590
+
591
+ - critical requirements are unclear
592
+ - work no longer fits the agreed task
593
+ - architecture/auth/security/permission/data migration/public API changes are required
594
+ - tests fail after two focused attempts and the result is not useful
595
+ - failure cause is unknown
596
+ - unrelated files would need to be changed
597
+ - relevant code cannot be inspected
598
+ - validation cannot be performed
599
+ - CI/coverage requirements are likely to fail and cannot be addressed or clearly documented
600
+ - proceeding would require guessing on high-impact behaviour
601
+
602
+ When blocked, return useful context so a human can continue efficiently.
@@ -0,0 +1,100 @@
1
+ # Agent Guide
2
+
3
+ This repository uses AI agents as manually invoked helpers.
4
+
5
+ There is no automatic multi-agent pipeline unless explicitly configured and tested.
6
+
7
+ For normal implementation work:
8
+
9
+ - Human/IDE use: `/ppp`
10
+ - Autonomous cloud agent use: `ppp-cloud`
11
+
12
+ Agents must follow repo instructions and stop for guardrailed work.
13
+
14
+ ## Quick reference
15
+
16
+ | I want to... | Use |
17
+ |---|---|
18
+ | Complete a normal ticket in my IDE | `/ppp` |
19
+ | Create a draft PR from a clear bounded task | `ppp-cloud` |
20
+ | Review a PR or diff | review agent / PR review workflow |
21
+ | Plan architecture | architecture agent or human-led planning |
22
+ | Add or improve tests | `/ppp` or `ppp-cloud` with test-only scope |
23
+ | Handle auth/security/migration/API changes | human-led first |
24
+
25
+ ## Recommended sequences
26
+
27
+ ### Bug fix / small change
28
+
29
+ 1. Use `/ppp` in IDE, or assign `ppp-cloud` for a clear bounded cloud-agent task.
30
+ 2. Review the resulting PR.
31
+
32
+ ### New feature with unclear architecture
33
+
34
+ 1. Ask for a plan first.
35
+ 2. Human reviews/approves plan.
36
+ 3. Use `/ppp` or `ppp-cloud` for the first bounded implementation task.
37
+
38
+ ### Adding tests
39
+
40
+ 1. Use `/ppp` or `ppp-cloud` with test-only scope.
41
+ 2. Review tests against behaviour, not implementation details.
42
+
43
+ ### Review only
44
+
45
+ 1. Use review workflow/agent.
46
+ 2. Return findings as `APPROVE`, `NEEDS_CHANGES`, or `BLOCKED`.
47
+
48
+ ## Context to provide
49
+
50
+ For implementation:
51
+
52
+ - task/ticket
53
+ - expected behaviour
54
+ - files/modules if known
55
+ - constraints and non-goals
56
+ - tests/checks expected
57
+ - ticket reference if available
58
+
59
+ For architecture:
60
+
61
+ - problem statement
62
+ - relevant modules
63
+ - constraints
64
+ - options considered
65
+ - risks
66
+ - non-goals
67
+
68
+ For review:
69
+
70
+ - original task
71
+ - PR/diff
72
+ - tests run
73
+ - known risks
74
+ - areas needing attention
75
+
76
+ ## Guardrails
77
+
78
+ Stop and ask before:
79
+
80
+ - database migrations
81
+ - auth/security/permissions changes
82
+ - new dependencies
83
+ - public API changes
84
+ - data model changes
85
+ - tenant/billing behaviour
86
+ - destructive or irreversible changes
87
+ - privacy/compliance-sensitive behaviour
88
+ - module enablement/build configuration changes
89
+
90
+ ## Instruction Files Reference
91
+
92
+ | File | Purpose |
93
+ |---|---|
94
+ | `AGENTS.md` | Agent selection and usage guide |
95
+ | `.github/copilot-instructions.md` | Repo-wide Copilot guidance |
96
+ | `.github/instructions/*.instructions.md` | Path or task-specific instructions |
97
+ | `.github/skills/ppp/SKILL.md` | Repo-local PPP skill |
98
+ | `.github/skills/ppp-cloud/SKILL.md` | Repo-local autonomous cloud-agent skill |
99
+ | `.github/PULL_REQUEST_TEMPLATE.md` | PR format |
100
+ | `CONTRIBUTING.md` | Contributor workflow and local development notes |
@@ -0,0 +1,22 @@
1
+ ## Summary
2
+
3
+ -
4
+
5
+ ## Changes
6
+
7
+ -
8
+
9
+ ## Testing
10
+
11
+ - [ ] Unit/component tests
12
+ - [ ] Integration/API tests
13
+ - [ ] Manual verification
14
+ - [ ] Not applicable / explained below
15
+
16
+ ## Risks / follow-ups
17
+
18
+ -
19
+
20
+ ## Screenshots
21
+
22
+ <!-- Include for UI changes -->