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 +4 -4
- data/lib/fp/commands/help.rb +20 -12
- data/lib/fp/commands/init.rb +26 -15
- data/lib/fp/version.rb +1 -1
- data/skills/fp/SKILL.md +27 -15
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4b09491a1b44b4ba693dfd567cdec5068d3410c577066435b541b2e9520ae04f
|
|
4
|
+
data.tar.gz: c9b7fb84bee3dbb3e8dfd8ee29f7c4d878747c0157efaa63fb020ead7934b2e7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cdf6cc31e230d20555285da1b44ee1816e94a88d3a5e3c02b22569cc63034d2f038d5183c12191f9ba446e5fdbc78a44ebe0b485e476f0dd5b9e021675338500
|
|
7
|
+
data.tar.gz: c9b9337383f9e7aecfa8caec130d99e3a1e93452481d14ffe1e0f95bd63c495480241d3b1578f0ff01ca5c7f81cc3b969a78cf232947a563cd307ade34b255c1
|
data/lib/fp/commands/help.rb
CHANGED
|
@@ -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,
|
|
293
|
-
# why: one
|
|
294
|
-
# acceptance:
|
|
295
|
-
#
|
|
296
|
-
#
|
|
297
|
-
#
|
|
298
|
-
#
|
|
299
|
-
#
|
|
300
|
-
#
|
|
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,
|
|
308
|
-
#
|
|
309
|
-
#
|
|
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" \\
|
data/lib/fp/commands/init.rb
CHANGED
|
@@ -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
|
|
474
|
-
capability, not the work (`“Dispatchers see
|
|
475
|
-
`“Implement status polling”`).
|
|
476
|
-
- **Why:** one
|
|
477
|
-
|
|
478
|
-
explain the mechanism.
|
|
479
|
-
- **Acceptance:**
|
|
480
|
-
the promise is true. State the trigger or situation, the result, and material
|
|
481
|
-
boundaries
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
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,
|
|
506
|
-
|
|
507
|
-
|
|
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
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
|
|
206
|
-
the project (`Dispatchers see current shipment
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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,
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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.
|
|
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-
|
|
11
|
+
date: 2026-11-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: net-http
|