featureparity 0.0.26 → 0.0.27

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2403a7e55f95df5cf1821375442902c0a06784c26186f1e2fc1ae2e474ee937b
4
- data.tar.gz: 4cbb3354c710f6d6e19114b2e2c28e533251c10bfa4a93c0a917ff73e5ebce93
3
+ metadata.gz: 4b09491a1b44b4ba693dfd567cdec5068d3410c577066435b541b2e9520ae04f
4
+ data.tar.gz: c9b7fb84bee3dbb3e8dfd8ee29f7c4d878747c0157efaa63fb020ead7934b2e7
5
5
  SHA512:
6
- metadata.gz: 8a065b839f21e0bdf4194f65b93c233abf3e09ef11a50f96d0259d68609fc1c6e89e3d07e760a5a8d3b3bb12b849b7fdb7ea1c3a5fa65fc59b4befa053595366
7
- data.tar.gz: 50e977bdf9a66c6f24a8a264d9334a506d5f15379f8e9aeaa8635d6cf84b5f9eee526e990c6e9b1a041631f1e15b7115e3ed3484311130f1fd23ca0ad7d35cde
6
+ metadata.gz: cdf6cc31e230d20555285da1b44ee1816e94a88d3a5e3c02b22569cc63034d2f038d5183c12191f9ba446e5fdbc78a44ebe0b485e476f0dd5b9e021675338500
7
+ data.tar.gz: c9b9337383f9e7aecfa8caec130d99e3a1e93452481d14ffe1e0f95bd63c495480241d3b1578f0ff01ca5c7f81cc3b969a78cf232947a563cd307ade34b255c1
@@ -289,24 +289,32 @@ module Fp
289
289
  #
290
290
  # Write the requirement as a product decision someone can approve, not a design
291
291
  # task. It should sound like a capable teammate, not AI boilerplate.
292
- # title: one product promise in present tense, not the implementation project
293
- # why: one or two natural sentences naming the user need/problem and outcome
294
- # acceptance: trigger or situation + observable result + material boundaries
295
- # Use examples and tests to ground and double-check the general rule, not to replace
296
- # it or ongoing conversation. Leave out components, data models, algorithms, endpoints,
297
- # and UI controls unless they are themselves part of the user-visible contract.
298
- # Include a price, quota, timeout, count, date,
299
- # role, or fallback only when the source made it a real product decision; if an
300
- # important policy is missing, ask instead of inventing a plausible value.
292
+ # title: one product promise in present tense, with a concrete subject and active verb
293
+ # why: one natural sentence naming the user need/problem and protected outcome
294
+ # acceptance: one independently verifiable rule of observable behaviour;
295
+ # append one concise concrete case as "Example: ..."
296
+ # Given/When/Then may clarify a rule, but is not mandatory. Split another result that
297
+ # could fail independently rather than comma-chaining it into the same requirement.
298
+ # Use the domain's real terms in examples and ask rather than invent consequential
299
+ # policy. Examples and tests ground and double-check the rule; they do not replace it.
300
+ # State each field directly. Avoid “This feature…”, “The goal is…”, “Users should be
301
+ # able to…”, “The system should…”, and task titles beginning “Enable” or “Implement”.
302
+ # Leave out components, data models, algorithms, endpoints, and UI controls unless
303
+ # they are themselves part of the user-visible contract.
304
+ # Include a price, quota, timeout, count, date, role, or fallback only when the source
305
+ # made it a real product decision; if important policy is missing, ask instead of
306
+ # inventing a plausible value.
301
307
  #
302
308
  # good title: "Dispatchers see current shipment status"
303
309
  # good why: "Dispatchers need to spot delayed shipments before they miss a delivery window."
304
310
  # good acceptance: "When status changes, the dashboard shows it; when unavailable, it says so instead of showing stale data as current."
305
311
  # bad: "Implement Redis polling every 30 seconds to ensure a seamless experience."
306
312
  # (invented policy, implementation detail, and filler; no product outcome)
307
- # Before saving, read it as a manager deciding scope: is the value clear, is the
308
- # result observable, are decisions separated from guesses, and does every sentence
309
- # earn its place?
313
+ # Before saving, answer against the actual fields: who is this promise for, how would
314
+ # the concrete example prove it done, and why does the outcome matter? If an answer is
315
+ # vague, revise or ask. Then read it as a manager deciding scope: is the value clear,
316
+ # is the result observable, are decisions separated from guesses, and does every
317
+ # sentence earn its place? Do not save until the draft passes this review.
310
318
  fp propose --project stowzilla \\
311
319
  --slug print_container_qr \\
312
320
  --name "Print QR code on container label" \\
@@ -470,18 +470,22 @@ module Fp
470
470
  task.** It should read like a capable teammate wrote it: direct, specific, and free
471
471
  of boilerplate such as “ensure a seamless experience.”
472
472
 
473
- - **Title:** one clear product promise in present tense. Name the user-visible
474
- capability, not the work (`“Dispatchers see current shipment status”`, not
475
- `“Implement status polling”`).
476
- - **Why:** one or two natural sentences naming who needs this, the problem or risk,
477
- and the outcome worth protecting. Do not repeat the title, sell the feature, or
478
- explain the mechanism.
479
- - **Acceptance:** the observable behaviour that would let a reviewer decide whether
480
- the promise is true. State the trigger or situation, the result, and material
481
- boundaries such as permissions, failure states, and affected surfaces. Use examples
482
- and marked tests to ground and double-check the rule. Do not mistake a few examples for the rule
483
- or let tests stand for every case; neither replaces the general rule and continued
484
- conversation.
473
+ - **Title:** one clear product promise in present tense, with a concrete subject and
474
+ active verb. Name the user-visible capability, not the work (`“Dispatchers see
475
+ current shipment status”`, not `“Implement status polling”`).
476
+ - **Why:** one natural sentence naming who needs this, the problem or risk, and the
477
+ outcome worth protecting. Do not repeat the title, narrate the request or bug
478
+ history, sell the feature, or explain the mechanism.
479
+ - **Acceptance:** one independently verifiable rule of observable behaviour that lets a
480
+ reviewer decide whether the promise is true. State the trigger or situation, the result, and material
481
+ boundaries that qualify that same promise. Given/When/Then may clarify those parts,
482
+ but it is not a mandatory template. Split a second result that could fail
483
+ independently into its own requirement instead of comma-chaining it here.
484
+ - **Example:** supply one concise concrete case that would pass the general rule, and
485
+ put it after the rule in Acceptance as `Example: ...`. Use the domain's real terms
486
+ and representative data, but ask rather than invent consequential policy. Do not mistake a few examples for the rule
487
+ or let marked tests stand for every case; neither replaces the general rule and
488
+ continued conversation.
485
489
  - **Numbers and policy:** include a price, limit, timeout, date, role, or fallback only
486
490
  when the source made it a real product decision. Never invent a plausible value to
487
491
  fill a gap. If the decision matters and the source is silent, ask.
@@ -494,6 +498,10 @@ module Fp
494
498
  unquestionable scope. Preserve important uncertainty as a question rather than
495
499
  laundering a guess into acceptance criteria.
496
500
 
501
+ State the promise itself rather than commentary about it. Avoid openings such as “This
502
+ feature…”, “This requirement…”, “The goal is…”, “Users should be able to…”, and “The
503
+ system should…”. Use the real actor or product as the subject and an active verb.
504
+
497
505
  - ✅ **Title:** `Dispatchers see current shipment status`
498
506
  **Why:** `Dispatchers need to spot delayed shipments before they miss a delivery window.`
499
507
  **Acceptance:** `When a shipment's status changes, the dashboard shows the new status; if status is unavailable, it says so instead of presenting stale data as current.`
@@ -502,9 +510,12 @@ module Fp
502
510
  **Acceptance:** `Use a background worker and refresh every 30 seconds.`
503
511
  This invents policy, prescribes a design, and never states the product outcome.
504
512
 
505
- Before proposing, read the draft once as a manager deciding scope: is the value clear,
506
- can the result be observed, are product decisions distinguished from guesses, and can
507
- every sentence earn its place? If not, revise or ask before writing the record.
513
+ Before proposing, answer three questions against the actual fields: Who is this promise
514
+ for? How would the concrete example prove it done? Why does the outcome matter? If any
515
+ answer is missing or vague, revise the draft or ask the user. Then read it as a manager deciding scope:
516
+ is the value clear, can the result be observed, are product decisions
517
+ distinguished from guesses, and does every sentence earn its place? If the draft fails
518
+ this review, revise it or ask before writing the record.
508
519
 
509
520
  ### 2. If the requirement is wrong, propose a change — don't silently edit it
510
521
 
data/lib/fp/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Fp
4
- VERSION = '0.0.26'
4
+ VERSION = '0.0.27'
5
5
  end
data/skills/fp/SKILL.md CHANGED
@@ -202,23 +202,33 @@ Before drafting:
202
202
 
203
203
  Write each field for a reviewer, not for the implementation:
204
204
 
205
- - **Title:** one clear product promise in present tense. Name the capability or outcome, not
206
- the project (`Dispatchers see current shipment status`, not `Implement status polling`).
207
- - **Why:** one or two natural sentences saying who needs this, the problem or risk, and the
208
- outcome worth protecting. Do not repeat the title, advertise the feature, or explain how
209
- it will be built. Delete AI filler such as “ensure a seamless, robust experience.”
210
- - **Acceptance:** observable behaviour that lets someone decide whether the promise is true.
211
- State the relevant trigger or situation, the result, and material boundaries. Include
212
- failure behaviour, permissions, or cross-surface consistency when those affect the promise.
213
- - **Examples:** use concrete examples or Given/When/Then cases when they clarify a rule or an
214
- edge. Examples and executable tests ground and double-check the specification; they do not
215
- define every case or replace the general rule and continued conversation.
205
+ - **Title:** one clear product promise in present tense, with a concrete subject and active
206
+ verb. Name the capability or outcome, not the project (`Dispatchers see current shipment
207
+ status`, not `Implement status polling`).
208
+ - **Why:** one natural sentence saying who needs this, the problem or risk, and the outcome
209
+ worth protecting. Do not repeat the title, narrate the request or bug history, advertise
210
+ the feature, or explain how it will be built. Delete AI filler such as “ensure a seamless,
211
+ robust experience.”
212
+ - **Acceptance:** one independently verifiable rule of observable behaviour that lets someone
213
+ decide whether the promise is true. State the relevant trigger or situation, the result, and
214
+ material boundaries that qualify that same promise. Given/When/Then may clarify those parts, but it
215
+ is not a mandatory template. Split a second result that could fail independently into its
216
+ own requirement instead of comma-chaining it here.
217
+ - **Example:** supply one concise concrete case that would pass the general rule, and put it
218
+ after the rule in Acceptance as `Example: ...`. Use the domain's real terms and
219
+ representative data, but ask rather than invent consequential policy. Do not mistake a few
220
+ examples for the rule or let executable tests stand for every case; neither replaces the
221
+ general rule and continued conversation.
216
222
  - **Numbers and policy:** include a number only when the source made it a real product decision
217
223
  or an external constraint requires it. Do not invent implementation defaults and present
218
224
  them as scope.
219
225
  - **Implementation detail:** omit components, data models, algorithms, endpoints, polling
220
226
  intervals, and UI controls unless that interface or constraint is itself user-visible policy.
221
227
 
228
+ State the promise itself rather than commentary about it. Avoid openings such as “This
229
+ feature…”, “This requirement…”, “The goal is…”, “Users should be able to…”, and “The
230
+ system should…”. Use the real actor or product as the subject and an active verb.
231
+
222
232
  A good requirement is concise, not merely short. Keep every sentence that changes a decision;
223
233
  remove everything that only sounds thorough.
224
234
 
@@ -230,10 +240,12 @@ remove everything that only sounds thorough.
230
240
  **Acceptance:** `Use a background worker and refresh every 30 seconds.`
231
241
  This invents policy, prescribes a design, and never states the outcome.
232
242
 
233
- Before saving, read the draft as a manager deciding scope: Is the value clear? Can the result
234
- be observed? Are real product decisions distinguished from guesses? Could every clause fail
235
- independently and, if so, should it be split? Does every sentence earn its place? Revise or ask
236
- before creating the record if the answer is no.
243
+ Before saving, answer three questions against the actual fields: Who is this promise for? How
244
+ would the concrete example prove it done? Why does the outcome matter? If any answer is missing
245
+ or vague, revise the draft or ask the user. Then read it as a manager deciding scope: Is the
246
+ value clear? Can the result be observed? Are real product decisions distinguished from guesses?
247
+ Could every clause fail independently and, if so, should it be split? Does every sentence earn
248
+ its place? Do not create the record until the draft passes this review.
237
249
 
238
250
  Then create the proposal as a draft:
239
251
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: featureparity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.26
4
+ version: 0.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stowzilla
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-10-27 00:00:00.000000000 Z
11
+ date: 2026-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-http