picopilot 0.1.3 → 0.1.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAmNjC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAO9C"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,sBAAsB,CAAC;AAEpD;;;;GAIG;AACH,wBAAgB,MAAM,IAAI,MAAM,CAM/B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAehC;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,IAAI,MAAM,CAkOjC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,YAAY,EAAE,CAO9C"}
@@ -141,6 +141,21 @@ Two checks that catch the bugs models ship most:
141
141
  losing, meaning it is too easy)? does it escalate? is it fair (no unavoidable
142
142
  loss)? If you drove a full round and nothing threatened you, tune it before
143
143
  calling it done. (The \`game-design-reference\` skill carries these self-checks.)
144
+ - **JUDGE the frame, do not just confirm it drew.** When you look at a gameplay
145
+ screenshot, actively hunt for what is WRONG, do not narrate that it rendered.
146
+ "It renders" is NOT "it is good". Ask concretely:
147
+ - **Readability / contrast:** can you tell EVERY entity apart, from the
148
+ background AND from each other, at a glance? If a hazard or pickup blends
149
+ into the scenery (same or near colour), that is a bug, recolour it. Every
150
+ thing the player must react to has to be instantly distinguishable.
151
+ - **Layout fairness:** are hazards spaced and placed so a HUMAN can actually
152
+ clear them (react in ~250ms, not frame-perfect)? Gaps too tight to pass, or
153
+ an obstacle you cannot see coming, are fairness defects, not difficulty.
154
+ - **Honest quality:** does it look intentional, or just non-broken? If a
155
+ player saw this, would the visuals read as deliberate?
156
+ These are the \`game-design-reference\` readability + fairness lenses applied to
157
+ the IMAGE you are looking at, not only to the logic. Apply them to the actual
158
+ frame; fix what fails before calling it done.
144
159
 
145
160
  A green \`verify\`, a bare \`timeout\`, or a nice-looking title is NOT done.
146
161
 
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACtB,sDAAsD,YAAY,aAAa,CAC/E,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO;;;;;;;;;;;;;CAaP,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa;IAC5B,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiNP,CAAC;AACF,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO;QACN,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC;QACpC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAC;QACtC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC;QACxC,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,EAAC;KAClD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../../src/engine/scaffold/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAC,iBAAiB,EAAC,MAAM,oBAAoB,CAAC;AAErD;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,mBAAmB,CAAC;AAEpD;;;;GAIG;AACH,MAAM,UAAU,MAAM;IACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CACtB,sDAAsD,YAAY,aAAa,CAC/E,CAAC;IACF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,gBAAgB,IAAI,CAAC,CAAC;IAChD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,OAAO;IACtB,OAAO;;;;;;;;;;;;;CAaP,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,aAAa;IAC5B,OAAO,iBAAiB,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ;IACvB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgOP,CAAC;AACF,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO;QACN,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAC;QACpC,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAC;QACtC,EAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAC;QACxC,EAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,aAAa,EAAE,EAAC;KAClD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "picopilot",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "An agent-first toolchain for PICO-8 game development, built on the incur CLI framework.",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
@@ -143,6 +143,16 @@ describe('picopilot init: AGENTS.md carries the curated PICO-8 reference', () =>
143
143
  expect(lower).toMatch(/sign|direction/);
144
144
  expect(lower).toMatch(/can the player lose|player.*(lose|fail)/);
145
145
  expect(lower).toContain('too easy');
146
+ // Judge the FRAME, not just confirm it drew: readability/contrast, layout
147
+ // fairness (spacing), and honest quality. These catch the tree-contrast /
148
+ // too-tight-gap / weak-graphics issues a large model still shipped.
149
+ expect(lower).toMatch(/judge the frame|judge the rendered/);
150
+ expect(lower).toContain('contrast');
151
+ expect(lower).toMatch(/distinguish/);
152
+ expect(lower).toMatch(/spaced|spacing|gap/);
153
+ // Framed as hunting for what is WRONG, and "renders" is not "good".
154
+ expect(lower).toContain('wrong');
155
+ expect(agents).toContain('"It renders" is NOT "it is good"');
146
156
  });
147
157
 
148
158
  it('warns against guessing the API and points at the shipped pico8-api reference', () => {
@@ -150,6 +150,21 @@ Two checks that catch the bugs models ship most:
150
150
  losing, meaning it is too easy)? does it escalate? is it fair (no unavoidable
151
151
  loss)? If you drove a full round and nothing threatened you, tune it before
152
152
  calling it done. (The \`game-design-reference\` skill carries these self-checks.)
153
+ - **JUDGE the frame, do not just confirm it drew.** When you look at a gameplay
154
+ screenshot, actively hunt for what is WRONG, do not narrate that it rendered.
155
+ "It renders" is NOT "it is good". Ask concretely:
156
+ - **Readability / contrast:** can you tell EVERY entity apart, from the
157
+ background AND from each other, at a glance? If a hazard or pickup blends
158
+ into the scenery (same or near colour), that is a bug, recolour it. Every
159
+ thing the player must react to has to be instantly distinguishable.
160
+ - **Layout fairness:** are hazards spaced and placed so a HUMAN can actually
161
+ clear them (react in ~250ms, not frame-perfect)? Gaps too tight to pass, or
162
+ an obstacle you cannot see coming, are fairness defects, not difficulty.
163
+ - **Honest quality:** does it look intentional, or just non-broken? If a
164
+ player saw this, would the visuals read as deliberate?
165
+ These are the \`game-design-reference\` readability + fairness lenses applied to
166
+ the IMAGE you are looking at, not only to the logic. Apply them to the actual
167
+ frame; fix what fails before calling it done.
153
168
 
154
169
  A green \`verify\`, a bare \`timeout\`, or a nice-looking title is NOT done.
155
170
 
@@ -68,6 +68,12 @@ describe('picopilot skills: generation output (the authored discipline skills)',
68
68
  expect(md).toContain('frame-perfect');
69
69
  // Visibility (draw what you spr()).
70
70
  expect(md).toContain('spr(');
71
+ // Readability judged on the RENDERED FRAME, not just the code: the
72
+ // contrast/spacing lens a large model skipped (it confirmed "renders" but
73
+ // never asked if entities were distinguishable or gaps clearable).
74
+ expect(md.toLowerCase()).toContain('rendered frame');
75
+ expect(md.toLowerCase()).toContain('contrast');
76
+ expect(md.toLowerCase()).toMatch(/distinguish|tell every entity apart/);
71
77
  // Originality is a METHOD with a self-check, and lists NO concrete
72
78
  // mechanics (the answer-menu trap). Assert the caveat that guards it.
73
79
  expect(md.toLowerCase()).toContain('self-check');
@@ -41,6 +41,8 @@ If you `spr(n)` an entity, sprite n must actually be DRAWN (a non-empty sprite),
41
41
 
42
42
  The player must be able to READ the game state at a glance and get FEEDBACK for every action: what am I, what is a hazard, what is a goal, did my input register, did I score or get hit. Motion trails, colour contrast, a HUD, particles/shake/sfx on events, these are not polish for its own sake, they are how the player perceives the state they must act on.
43
43
 
44
+ **The self-check (apply it to the RENDERED FRAME, not just the code).** When you look at a gameplay screenshot, judge it, do not just confirm it drew. Looking for what is WRONG: can you tell EVERY entity apart from the background and from each other at a glance (a hazard the same colour as the scenery is a readability bug, recolour it)? is every hazard telegraphed and spaced so a human can react in ~250ms rather than by frame-perfect timing (a gap too tight to pass, or an off-screen hazard, is a fairness defect, not difficulty)? does it look intentional, or merely non-broken? "It renders" is not "it is readable and fair". Apply these lenses to the actual image and fix what fails before calling the game done.
45
+
44
46
  ## Difficulty curve and progression
45
47
 
46
48
  A good game GOES SOMEWHERE: it escalates. Ramp difficulty by introducing or combining MECHANICS (a new hazard type, a new interaction) over the playthrough, not merely by piling more of the same obstacle. More-of-the-same reads as samey and does not deepen; a new wrinkle does. Aim for a difficulty ARC with a satisfying peak, not a flat loop. Keep the first contact with each new mechanic gentle enough to learn it before it is tested under pressure.