@overshift/sfs 1.1.0 → 1.1.2

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/README.md +34 -3
  2. package/dist/cli/coverage-types.d.ts +1 -0
  3. package/dist/cli/coverage-types.d.ts.map +1 -1
  4. package/dist/cli/coverage.d.ts.map +1 -1
  5. package/dist/cli/coverage.js +14 -10
  6. package/dist/cli/coverage.js.map +1 -1
  7. package/dist/cli/help-text.d.ts +6 -0
  8. package/dist/cli/help-text.d.ts.map +1 -0
  9. package/dist/cli/help-text.js +50 -0
  10. package/dist/cli/help-text.js.map +1 -0
  11. package/dist/cli/init-templates.d.ts +1 -0
  12. package/dist/cli/init-templates.d.ts.map +1 -1
  13. package/dist/cli/init-templates.js +25 -0
  14. package/dist/cli/init-templates.js.map +1 -1
  15. package/dist/cli/init.d.ts.map +1 -1
  16. package/dist/cli/init.js +21 -16
  17. package/dist/cli/init.js.map +1 -1
  18. package/dist/cli/sfsignore.d.ts +5 -0
  19. package/dist/cli/sfsignore.d.ts.map +1 -0
  20. package/dist/cli/sfsignore.js +45 -0
  21. package/dist/cli/sfsignore.js.map +1 -0
  22. package/dist/cli/story-extractor.d.ts +3 -3
  23. package/dist/cli/story-extractor.d.ts.map +1 -1
  24. package/dist/cli/story-extractor.js +29 -16
  25. package/dist/cli/story-extractor.js.map +1 -1
  26. package/dist/cli/story-id-pattern.d.ts +10 -0
  27. package/dist/cli/story-id-pattern.d.ts.map +1 -0
  28. package/dist/cli/story-id-pattern.js +42 -0
  29. package/dist/cli/story-id-pattern.js.map +1 -0
  30. package/dist/index.js +9 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/parser/config-parser.d.ts.map +1 -1
  33. package/dist/parser/config-parser.js +3 -0
  34. package/dist/parser/config-parser.js.map +1 -1
  35. package/dist/parser/types.d.ts +1 -0
  36. package/dist/parser/types.d.ts.map +1 -1
  37. package/package.json +8 -3
  38. package/scripts/postinstall.cjs +12 -0
  39. package/skills/sfs/from-user-story-to-sfs.md +163 -0
  40. package/skills/sfs/read-sfs-session-reports.md +234 -0
  41. package/skills/sfs/run-sfs-session.md +272 -0
  42. package/skills/sfs/validate-sfs-syntax.md +291 -0
  43. package/skills/sfs/write-sfs-session-reports.md +206 -0
@@ -1 +1 @@
1
- {"version":3,"file":"story-extractor.js","sourceRoot":"","sources":["../../src/cli/story-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGhC,MAAM,UAAU,0BAA0B,CACxC,QAAgB;IAEhB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC9C,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,QAAgB;IAEhB,MAAM,OAAO,GAAgB,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,cAAkC,CAAC;QACvC,IAAI,YAAgC,CAAC;QAErC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,iFAAiF;YACjF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAC7B,yCAAyC,CAC1C,CAAC;YACF,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtB,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,cAAc;wBAClB,KAAK,EAAE,YAAY;wBACnB,IAAI,EAAE,QAAQ;wBACd,MAAM,EAAE,OAAO;qBAChB,CAAC,CAAC;gBACL,CAAC;gBACD,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC/C,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;gBACpD,SAAS;YACX,CAAC;YAED,wFAAwF;YACxF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACxE,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,IAAI,cAAc,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,cAAc;wBAClB,KAAK,EAAE,YAAY;wBACnB,IAAI,EAAE,QAAQ;wBACd,MAAM,EAAE,OAAO;qBAChB,CAAC,CAAC;gBACL,CAAC;gBACD,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;gBAC5C,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;gBACjD,SAAS;YACX,CAAC;YAED,gFAAgF;YAChF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC1B,4CAA4C,CAC7C,CAAC;YACF,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBAC9B,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS;oBACxC,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,iEAAiE;YACjE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACrE,IAAI,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;oBAC/B,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,SAAS;oBACzC,IAAI,EAAE,QAAQ;oBACd,MAAM,EAAE,OAAO;iBAChB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,cAAc;gBAClB,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,OAAO;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAoB;IACrD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAqB,CAAC;IAE9C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxC,IACE,CAAC,QAAQ;YACT,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,EAC1D,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;YACtD,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qBAAqB;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"story-extractor.js","sourceRoot":"","sources":["../../src/cli/story-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare const DEFAULT_STORY_ID_PATTERN = "US-[A-Z0-9-]+";
2
+ export declare const DEFAULT_STORY_ID_GLOB = "US-*.md";
3
+ export declare function buildStoryIdRegex(pattern: string): RegExp;
4
+ export declare function buildStoryFileGlob(pattern: string): string;
5
+ export interface StoryIdPattern {
6
+ regex: RegExp;
7
+ glob: string;
8
+ }
9
+ export declare function loadStoryIdPattern(cwd?: string, cliPattern?: string): Promise<StoryIdPattern>;
10
+ //# sourceMappingURL=story-id-pattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story-id-pattern.d.ts","sourceRoot":"","sources":["../../src/cli/story-id-pattern.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AACxD,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAE/C,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,kBAAkB,CACtC,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC,CAqBzB"}
@@ -0,0 +1,42 @@
1
+ import { loadConfig } from "../executor/config-loader.js";
2
+ export const DEFAULT_STORY_ID_PATTERN = "US-[A-Z0-9-]+";
3
+ export const DEFAULT_STORY_ID_GLOB = "US-*.md";
4
+ export function buildStoryIdRegex(pattern) {
5
+ try {
6
+ return new RegExp(pattern, "i");
7
+ }
8
+ catch (err) {
9
+ throw new Error(`Invalid story ID pattern "${pattern}": ${err instanceof Error ? err.message : "invalid regex"}`);
10
+ }
11
+ }
12
+ export function buildStoryFileGlob(pattern) {
13
+ // Extract literal prefix before the first regex metacharacter
14
+ const metaChars = /[\\[(.+*?{^$|]/;
15
+ const match = pattern.match(metaChars);
16
+ if (!match || match.index === 0) {
17
+ return "*.md";
18
+ }
19
+ const prefix = pattern.slice(0, match.index);
20
+ return `${prefix}*.md`;
21
+ }
22
+ export async function loadStoryIdPattern(cwd, cliPattern) {
23
+ if (cliPattern) {
24
+ return {
25
+ regex: buildStoryIdRegex(cliPattern),
26
+ glob: buildStoryFileGlob(cliPattern),
27
+ };
28
+ }
29
+ const config = await loadConfig();
30
+ if (config.settings.storyIdPattern) {
31
+ const pattern = config.settings.storyIdPattern;
32
+ return {
33
+ regex: buildStoryIdRegex(pattern),
34
+ glob: buildStoryFileGlob(pattern),
35
+ };
36
+ }
37
+ return {
38
+ regex: buildStoryIdRegex(DEFAULT_STORY_ID_PATTERN),
39
+ glob: DEFAULT_STORY_ID_GLOB,
40
+ };
41
+ }
42
+ //# sourceMappingURL=story-id-pattern.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"story-id-pattern.js","sourceRoot":"","sources":["../../src/cli/story-id-pattern.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAE1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE/C,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,CAAC;QACH,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,6BAA6B,OAAO,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CACjG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,8DAA8D;IAC9D,MAAM,SAAS,GAAG,gBAAgB,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,GAAG,MAAM,MAAM,CAAC;AACzB,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAY,EACZ,UAAmB;IAEnB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE,iBAAiB,CAAC,UAAU,CAAC;YACpC,IAAI,EAAE,kBAAkB,CAAC,UAAU,CAAC;SACrC,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC/C,OAAO;YACL,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC;YACjC,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK,EAAE,iBAAiB,CAAC,wBAAwB,CAAC;QAClD,IAAI,EAAE,qBAAqB;KAC5B,CAAC;AACJ,CAAC"}
package/dist/index.js CHANGED
@@ -4,34 +4,41 @@ import { runCommand } from "./cli/run.js";
4
4
  import { validateCommand } from "./cli/validate.js";
5
5
  import { initCommand } from "./cli/init.js";
6
6
  import { coverageCommand } from "./cli/coverage.js";
7
+ import { PROGRAM_HELP_AFTER, COVERAGE_HELP_AFTER, RUN_HELP_AFTER, INIT_HELP_AFTER, VALIDATE_HELP_AFTER, } from "./cli/help-text.js";
7
8
  const program = new Command();
8
9
  program
9
10
  .name("sfs")
10
11
  .description("StoryFlowSteps - Agent-oriented browser automation for user story validation")
11
- .version("0.1.0");
12
+ .version("0.1.0")
13
+ .addHelpText("after", PROGRAM_HELP_AFTER);
12
14
  program
13
15
  .command("run [files...]")
14
16
  .description("Run SFS flow files")
15
17
  .option("-e, --env <environment>", "Use environment-specific config")
16
18
  .option("-v, --verbose", "Show verbose output")
17
19
  .option("--headed", "Run browser in headed mode")
20
+ .addHelpText("after", RUN_HELP_AFTER)
18
21
  .action(runCommand);
19
22
  program
20
23
  .command("validate <files...>")
21
24
  .description("Validate SFS file syntax without running")
25
+ .addHelpText("after", VALIDATE_HELP_AFTER)
22
26
  .action(validateCommand);
23
27
  program
24
28
  .command("init")
25
29
  .description("Initialize SFS in the current directory")
26
30
  .option("-f, --force", "Overwrite existing files")
27
31
  .option("--skills-dir <dir>", "Directory to copy skills to")
32
+ .addHelpText("after", INIT_HELP_AFTER)
28
33
  .action(initCommand);
29
34
  program
30
35
  .command("coverage")
31
36
  .description("Report user story coverage by SFS files")
32
- .option("-s, --stories <dir>", "Directory containing user story markdown files", "stories")
37
+ .option("-s, --stories <dir>", "Directory to scan for user story markdown files (defaults to entire project)")
33
38
  .option("--sfs <pattern>", "Glob pattern for SFS files", "**/*.sfs")
34
39
  .option("-f, --format <format>", "Output format: table, json, summary", "table")
40
+ .option("--story-pattern <regex>", "Regex pattern for story IDs (default: US-[A-Z0-9-]+)")
41
+ .addHelpText("after", COVERAGE_HELP_AFTER)
35
42
  .action(coverageCommand);
36
43
  program.parse();
37
44
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CACV,8EAA8E,CAC/E;KACA,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,yBAAyB,EAAE,iCAAiC,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;KAC9C,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;KAChD,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;KAC3D,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CACL,qBAAqB,EACrB,gDAAgD,EAChD,SAAS,CACV;KACA,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,EAAE,UAAU,CAAC;KACnE,MAAM,CACL,uBAAuB,EACvB,qCAAqC,EACrC,OAAO,CACR;KACA,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CACV,8EAA8E,CAC/E;KACA,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAE5C,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,oBAAoB,CAAC;KACjC,MAAM,CAAC,yBAAyB,EAAE,iCAAiC,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;KAC9C,MAAM,CAAC,UAAU,EAAE,4BAA4B,CAAC;KAChD,WAAW,CAAC,OAAO,EAAE,cAAc,CAAC;KACpC,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,0CAA0C,CAAC;KACvD,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,aAAa,EAAE,0BAA0B,CAAC;KACjD,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;KAC3D,WAAW,CAAC,OAAO,EAAE,eAAe,CAAC;KACrC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CACL,qBAAqB,EACrB,8EAA8E,CAC/E;KACA,MAAM,CAAC,iBAAiB,EAAE,4BAA4B,EAAE,UAAU,CAAC;KACnE,MAAM,CACL,uBAAuB,EACvB,qCAAqC,EACrC,OAAO,CACR;KACA,MAAM,CACL,yBAAyB,EACzB,sDAAsD,CACvD;KACA,WAAW,CAAC,OAAO,EAAE,mBAAmB,CAAC;KACzC,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-parser.d.ts","sourceRoot":"","sources":["../../src/parser/config-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAIV,MAAM,YAAY,CAAC;AAEpB,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAkB,GAC5B,iBAAiB,CAwNnB;AAED,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,CAsC/D"}
1
+ {"version":3,"file":"config-parser.d.ts","sourceRoot":"","sources":["../../src/parser/config-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EAIV,MAAM,YAAY,CAAC;AAEpB,UAAU,iBAAiB;IACzB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAkB,GAC5B,iBAAiB,CA2NnB;AAED,wBAAgB,YAAY,CAAC,GAAG,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,CAsC/D"}
@@ -83,6 +83,9 @@ export function parseConfigFile(content, _filename = "unknown") {
83
83
  settings.preserveStateOnFailure =
84
84
  value.toLowerCase() === "true";
85
85
  break;
86
+ case "STORY_ID_PATTERN":
87
+ settings.storyIdPattern = value;
88
+ break;
86
89
  }
87
90
  }
88
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-parser.js","sourceRoot":"","sources":["../../src/parser/config-parser.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,YAAoB,SAAS;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAwC,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAwC,EAAE,CAAC;IAEzD,MAAM,QAAQ,GAAgB,EAAE,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,MAAM,aAAa,GAAiB,EAAE,CAAC;IACvC,MAAM,YAAY,GAAiB,EAAE,CAAC;IACtC,MAAM,UAAU,GAAiB,EAAE,CAAC;IACpC,MAAM,SAAS,GAAiB,EAAE,CAAC;IAEnC,IAAI,cAAkC,CAAC;IACvC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,YAAY,GAAa,EAAE,CAAC;IAEhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,oBAAoB;QACpB,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,WAAW,GAAG,CAAC,WAAW,CAAC;YAC3B,SAAS;QACX,CAAC;QAED,kBAAkB;QAClB,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACvD,OAAO,GAAG,KAAK,CAAC;YAChB,YAAY,GAAG,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,oDAAoD;QACpD,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1D,SAAS;QACX,CAAC;QAED,iCAAiC;QACjC,QAAQ,cAAc,EAAE,CAAC;YACvB,KAAK,UAAU;gBACb,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,MAAM,KAAK,GAAG,OAAO;yBAClB,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;yBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBAEpB,aAAa;oBACb,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG,IAAI,CAAC;wBACf,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;wBACjD,SAAS;oBACX,CAAC;oBAED,gBAAgB;oBAChB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;wBAC3C,SAAS;oBACX,CAAC;oBAED,WAAW;oBACX,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACnD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBAE/C,IACE,UAAU,IAAI,CAAC;wBACf,QAAQ,IAAI,CAAC;wBACb,KAAK,CAAC,UAAU,CAAC;wBACjB,KAAK,CAAC,QAAQ,CAAC,EACf,CAAC;wBACD,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;wBAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;wBAE9B,QAAQ,GAAG,EAAE,CAAC;4BACZ,KAAK,YAAY;gCACf,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;gCAC5B,MAAM;4BACR,KAAK,QAAQ;gCACX,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gCACxB,MAAM;4BACR,KAAK,SAAS;gCACZ,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gCACvC,MAAM;4BACR,KAAK,YAAY;gCACf,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;gCAC3B,MAAM;4BACR,KAAK,YAAY;gCACf,QAAQ,CAAC,SAAS,GAAG,KAIV,CAAC;gCACZ,MAAM;4BACR,KAAK,YAAY;gCACf,QAAQ,CAAC,SAAS,GAAG,KAIV,CAAC;gCACZ,MAAM;4BACR,KAAK,2BAA2B;gCAC9B,QAAQ,CAAC,sBAAsB;oCAC7B,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;gCACjC,MAAM;wBACV,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,MAAM;YAER,KAAK,OAAO;gBACV,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,MAAM;YAER,KAAK,UAAU;gBACb,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrD,MAAM,KAAK,GAAG,OAAO;yBAClB,KAAK,CAAC,GAAG,CAAC;yBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;yBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;oBAEpB,aAAa;oBACb,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,GAAG,IAAI,CAAC;wBACf,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;wBACjD,SAAS;oBACX,CAAC;oBAED,gBAAgB;oBAChB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;wBAC3C,SAAS;oBACX,CAAC;oBAED,WAAW;oBACX,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACnD,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACrD,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACrD,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBAEpD,IAAI,UAAU,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;wBACzC,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC;4BACvB,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;4BAClC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE;4BAClC,WAAW,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;yBACvD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,MAAM;YAER,KAAK,gBAAgB;gBACnB,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;oBAC3B,6DAA6D;oBAC7D,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;wBACd,GAAG,EAAE,OAAO;wBACZ,IAAI,EAAE,OAAO;qBACd,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,eAAe;gBAClB,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;oBAC3B,YAAY,CAAC,IAAI,CAAC;wBAChB,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;wBACd,GAAG,EAAE,OAAO;wBACZ,IAAI,EAAE,OAAO;qBACd,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,aAAa;gBAChB,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;oBAC3B,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;wBACd,GAAG,EAAE,OAAO;wBACZ,IAAI,EAAE,OAAO;qBACd,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YAER,KAAK,YAAY;gBACf,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;oBAC3B,SAAS,CAAC,IAAI,CAAC;wBACb,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE,OAAO;wBACd,GAAG,EAAE,OAAO;wBACZ,IAAI,EAAE,OAAO;qBACd,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;QACV,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAc;QACxB,QAAQ;QACR,KAAK;QACL,QAAQ;QACR,aAAa;QACb,YAAY;QACZ,UAAU;QACV,SAAS;KACV,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAG,OAAoB;IAClD,MAAM,MAAM,GAAc;QACxB,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;QACZ,aAAa,EAAE,EAAE;QACjB,YAAY,EAAE,EAAE;QAChB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,oBAAoB;QACpB,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE7D,eAAe;QACf,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAEnC,+CAA+C;QAC/C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAC/B,CAAC;YACF,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;QACnD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"config-parser.js","sourceRoot":"","sources":["../../src/parser/config-parser.ts"],"names":[],"mappings":"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"}
@@ -90,6 +90,7 @@ export interface SfsSettings {
90
90
  afterEach?: "always" | "on-pass" | "on-fail" | "never";
91
91
  afterThis?: "always" | "on-pass" | "on-fail" | "never";
92
92
  preserveStateOnFailure?: boolean;
93
+ storyIdPattern?: string;
93
94
  }
94
95
  export interface SfsPersona {
95
96
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parser/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@overshift/sfs",
4
- "version": "1.1.0",
4
+ "version": "1.1.2",
5
5
  "description": "StoryFlowSteps - Agent-oriented browser automation protocol for validating user story flows",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -25,15 +25,18 @@
25
25
  "dod:all": "node scripts/dod.cjs all",
26
26
  "dod:core": "node scripts/dod.cjs core",
27
27
  "dod:skip": "node scripts/dod.cjs skip",
28
+ "knip": "npx knip",
28
29
  "commit:check": "git commit",
29
30
  "commit:check:all": "git commit",
30
31
  "commit:check:core": "set SFS_CHECKS=core&& git commit",
31
32
  "commit:check:skip": "set SFS_CHECKS=skip&& git commit",
33
+ "check:longfiles": "powershell -ExecutionPolicy Bypass -File ./scripts/check-longfiles.ps1",
32
34
  "semgrep": "semgrep --config semgrep.yml --config p/default --config p/security-audit --config p/secrets --config p/javascript --config p/typescript --config p/nodejs src/",
33
35
  "semgrep:local": "semgrep --config semgrep.yml src/",
34
36
  "semgrep:security": "semgrep --config p/security-audit --config p/secrets --config p/owasp-top-ten --config p/xss --config p/sql-injection --config p/command-injection src/",
35
37
  "semgrep:auto": "semgrep --config auto src/",
36
- "publish:npm": "node scripts/publish-to-npm.js"
38
+ "publish:npm": "node scripts/publish-to-npm.js",
39
+ "postinstall": "node scripts/postinstall.cjs"
37
40
  },
38
41
  "keywords": [
39
42
  "sfs",
@@ -51,7 +54,9 @@
51
54
  "node": ">=18.0.0"
52
55
  },
53
56
  "files": [
54
- "dist"
57
+ "dist",
58
+ "skills",
59
+ "scripts/postinstall.cjs"
55
60
  ],
56
61
  "dependencies": {
57
62
  "chalk": "^5.3.0",
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Development guard: skip hint when running inside the source repo
4
+ if (!__dirname.includes("node_modules")) {
5
+ process.exit(0);
6
+ }
7
+
8
+ try {
9
+ console.log('\nSFS installed! Run "npx sfs init" to set up your project.\n');
10
+ } catch {
11
+ // Exit cleanly even if console output fails
12
+ }
@@ -0,0 +1,163 @@
1
+ # From User Story to SFS Flow
2
+
3
+ This skill guides the creation of SFS (StoryFlowSteps) files from user stories.
4
+
5
+ ## When to Use
6
+
7
+ Use this skill when:
8
+ - The user provides a user story and wants an SFS flow created
9
+ - The user describes a user flow to validate
10
+ - Converting acceptance criteria into automated validation
11
+
12
+ ## Process
13
+
14
+ ### 1. Analyze the User Story
15
+
16
+ Extract from the user story:
17
+ - [ ] **Who** - the user persona
18
+ - [ ] **What** - the action they want to perform
19
+ - [ ] **Why** - the business value / goal
20
+ - [ ] **Acceptance criteria** - specific conditions for success
21
+
22
+ ### 2. Identify Flow Structure
23
+
24
+ Break down into phases:
25
+ - [ ] **Setup phase** - prerequisites and initial state
26
+ - [ ] **Core phases** - main user journey steps
27
+ - [ ] **Verification phase** - success criteria validation
28
+
29
+ ### 3. Create the SFS File
30
+
31
+ Use this template:
32
+
33
+ ```sfs
34
+ # <story-id>.sfs
35
+ # <brief description of the flow>
36
+
37
+ STORY <story-id>
38
+ ENTRYPOINT <starting-url>
39
+ LOCALE <locale-code>
40
+
41
+ HINT <context about the page/app>
42
+ HINT <additional context>
43
+
44
+ ON FAILURE capture screenshot and describe visible state
45
+
46
+ BEFORE THIS
47
+ ASSERT port <port> is open
48
+ # Add any prerequisite checks
49
+
50
+ --- <phase-1-name> ---
51
+ # Initial state observations
52
+ OBSERVE <initial conditions>
53
+
54
+ --- <phase-2-name> ---
55
+ # User actions
56
+ <ACTION> <target> [>> selector:type:value]
57
+ WAIT FOR <condition>
58
+
59
+ --- <phase-3-name> ---
60
+ # More actions
61
+ <ACTION> <target>
62
+
63
+ --- verification ---
64
+ # Verify success criteria
65
+ OBSERVE <expected outcome 1>
66
+ OBSERVE <expected outcome 2>
67
+ CAPTURE <flow-name>-success
68
+
69
+ DONE WHEN <final success condition>
70
+ ```
71
+
72
+ ### 4. Best Practices
73
+
74
+ **Selectors:**
75
+ - Provide fuzzy descriptions for resilience
76
+ - Add explicit selectors (`>> selector:testid:x`) whenever possible
77
+ - Use testid selectors when available
78
+
79
+ **Phases:**
80
+ - Name phases descriptively (kebab-case)
81
+ - Keep phases focused on one logical step
82
+ - Use phases for failure localization
83
+
84
+ **Observations:**
85
+ - Be specific about what to observe
86
+ - Include both presence and content checks
87
+ - Use variables for dynamic values
88
+
89
+ **Hints:**
90
+ - Describe UI layout (RTL/LTR, sidebar position)
91
+ - Note authentication requirements
92
+ - Mention relevant test data
93
+
94
+ ## Example
95
+
96
+ **User Story:**
97
+ ```
98
+ As a customer
99
+ I want to add products to my cart
100
+ So that I can purchase them later
101
+
102
+ Acceptance Criteria:
103
+ - User can view product details
104
+ - User can select quantity
105
+ - Add to cart button adds item
106
+ - Cart badge updates with item count
107
+ ```
108
+
109
+ **Generated SFS:**
110
+ ```sfs
111
+ # US-CART-001.sfs
112
+ # Add product to shopping cart
113
+
114
+ STORY US-CART-001
115
+ ENTRYPOINT http://localhost:3000/products
116
+ LOCALE en-US
117
+
118
+ HINT E-commerce product listing page
119
+ HINT Products displayed in grid with Add to Cart buttons
120
+ HINT Cart icon in header shows item count badge
121
+
122
+ ON FAILURE capture screenshot and describe visible state
123
+
124
+ BEFORE THIS
125
+ ASSERT port 3000 is open
126
+
127
+ --- view-products ---
128
+ OBSERVE product grid is visible
129
+ OBSERVE at least one product card displayed
130
+
131
+ --- select-product ---
132
+ CLICK first product card
133
+ WAIT FOR product details page to load
134
+ OBSERVE product name is visible
135
+ OBSERVE product price is displayed
136
+ OBSERVE Add to Cart button is visible
137
+
138
+ --- set-quantity ---
139
+ READ cart badge count INTO $initialCount
140
+ TYPE "2" INTO quantity input >> selector:testid:qty-input
141
+ OBSERVE quantity shows 2
142
+
143
+ --- add-to-cart ---
144
+ CLICK Add to Cart button >> selector:testid:add-to-cart-btn
145
+ WAIT FOR cart update animation to complete
146
+
147
+ --- verify-cart-updated ---
148
+ OBSERVE success message displayed
149
+ OBSERVE cart badge count increased from $initialCount
150
+ CAPTURE cart-updated
151
+
152
+ DONE WHEN cart badge shows increased item count and success message visible
153
+ ```
154
+
155
+ ## Output Checklist
156
+
157
+ Before delivering the SFS file, verify:
158
+ - [ ] STORY ID matches the user story
159
+ - [ ] ENTRYPOINT is correct for the application
160
+ - [ ] All acceptance criteria are covered by OBSERVE statements
161
+ - [ ] Phases have clear, descriptive names
162
+ - [ ] DONE WHEN reflects the ultimate success condition
163
+ - [ ] HINT provides useful context for the agent
@@ -0,0 +1,234 @@
1
+ # Read SFS Session Reports
2
+
3
+ This skill guides analyzing and interpreting SFS session reports.
4
+
5
+ ## When to Use
6
+
7
+ Use this skill when:
8
+ - The user asks about test results
9
+ - Analyzing why tests failed
10
+ - Identifying patterns across multiple runs
11
+ - Suggesting improvements based on reports
12
+
13
+ ## Report Location
14
+
15
+ Reports are stored in:
16
+ ```
17
+ /stories/runs/<session-id>/
18
+ run.report.md # Main report
19
+ /failures/
20
+ <sfs-id>/
21
+ <phase-name>.png # Failure screenshot
22
+ context.md # Failure context
23
+ execution.log # Execution log
24
+ docker.log # Docker logs (if applicable)
25
+ ```
26
+
27
+ ## Reading Process
28
+
29
+ ### 1. Read the Summary
30
+
31
+ Look at the header for quick status:
32
+ ```markdown
33
+ **Result:** 7 passed, 1 failed, 1 skipped
34
+ ```
35
+
36
+ Key questions:
37
+ - [ ] What's the pass rate?
38
+ - [ ] How many failures vs skips?
39
+ - [ ] What was the total duration?
40
+
41
+ ### 2. Analyze the Results Table
42
+
43
+ Scan for patterns:
44
+ ```markdown
45
+ | SFS | Result | Duration | Phase | Notes |
46
+ ```
47
+
48
+ Look for:
49
+ - [ ] Which SFS files failed?
50
+ - [ ] At which phase did they fail?
51
+ - [ ] Are there any warnings (⚠️)?
52
+ - [ ] Any unusually long durations?
53
+
54
+ ### 3. Deep Dive on Failures
55
+
56
+ For each failure, extract:
57
+ - [ ] **Step** - Exact command that failed
58
+ - [ ] **Error** - What went wrong
59
+ - [ ] **Agent observations** - Page state details
60
+ - [ ] **Screenshot** - Visual evidence
61
+
62
+ Categorize failures:
63
+ 1. **Selector issues** - Element not found, wrong selector
64
+ 2. **Timing issues** - Element not ready, race condition
65
+ 3. **State issues** - Wrong page state, unexpected data
66
+ 4. **Environment issues** - Service down, missing dependencies
67
+ 5. **Test issues** - Bad test design, flaky assertions
68
+
69
+ ### 4. Review Skipped Tests
70
+
71
+ Understand why tests were skipped:
72
+ - Prerequisite failures (assertions)
73
+ - Dependency failures (BEFORE THIS)
74
+ - Environment issues
75
+
76
+ ### 5. Check Discoveries
77
+
78
+ Look for agent findings:
79
+ - New selectors discovered
80
+ - Selector mismatches
81
+ - Performance observations
82
+
83
+ ## Analysis Templates
84
+
85
+ ### Failure Analysis
86
+
87
+ ```markdown
88
+ ## Failure: <SFS-ID>
89
+
90
+ **Category:** <selector|timing|state|environment|test>
91
+ **Root Cause:** <brief explanation>
92
+ **Impact:** <how severe, what's blocked>
93
+
94
+ **Fix Options:**
95
+ 1. <Option 1>
96
+ 2. <Option 2>
97
+
98
+ **Recommended Fix:** <which option and why>
99
+ ```
100
+
101
+ ### Trend Analysis (Multiple Reports)
102
+
103
+ ```markdown
104
+ ## Trend Analysis
105
+
106
+ **Reports analyzed:** <count>
107
+ **Date range:** <start> to <end>
108
+
109
+ ### Pass Rate Trend
110
+ - <date>: X% (Y passed, Z failed)
111
+ - <date>: X% (Y passed, Z failed)
112
+
113
+ ### Recurring Failures
114
+ | SFS | Failure Count | Common Phase | Pattern |
115
+ |-----|---------------|--------------|---------|
116
+
117
+ ### Flaky Tests
118
+ <tests that sometimes pass, sometimes fail>
119
+
120
+ ### Environment Issues
121
+ <recurring environment-related failures>
122
+ ```
123
+
124
+ ## Common Issues and Solutions
125
+
126
+ ### Selector Not Found
127
+
128
+ **Symptoms:**
129
+ - Error mentions element not found
130
+ - Explicit selector doesn't match DOM
131
+
132
+ **Solutions:**
133
+ 1. Check if selector changed in the application
134
+ 2. Use browser devtools to find new selector
135
+ 3. Consider fuzzy description instead of explicit selector
136
+ 4. Add WAIT FOR element to be visible
137
+
138
+ ### Timing/Race Condition
139
+
140
+ **Symptoms:**
141
+ - Intermittent failures
142
+ - Element found but interaction fails
143
+ - "Element not interactable"
144
+
145
+ **Solutions:**
146
+ 1. Add `WAIT FOR <condition>` before interaction
147
+ 2. Add `WAIT FOR network idle`
148
+ 3. Increase TIMEOUT in config
149
+ 4. Add `OBSERVE <element> is ready` before action
150
+
151
+ ### Wrong Page State
152
+
153
+ **Symptoms:**
154
+ - Unexpected content visible
155
+ - Navigation didn't complete
156
+ - Previous test affected state
157
+
158
+ **Solutions:**
159
+ 1. Add `WAIT FOR url contains <expected>`
160
+ 2. Improve BEFORE EACH to reset state
161
+ 3. Clear cookies/storage between tests
162
+ 4. Check AFTER THIS cleanup
163
+
164
+ ### Prerequisite Failures
165
+
166
+ **Symptoms:**
167
+ - Tests skipped
168
+ - Assertion failures in BEFORE blocks
169
+
170
+ **Solutions:**
171
+ 1. Check if services are running
172
+ 2. Verify environment variables
173
+ 3. Check API health endpoints
174
+ 4. Review Before Session setup
175
+
176
+ ## Reporting to User
177
+
178
+ When presenting analysis:
179
+
180
+ 1. **Start with summary:**
181
+ "The session had X failures out of Y tests (Z% pass rate)"
182
+
183
+ 2. **Highlight critical issues:**
184
+ "The main issue is... which affects..."
185
+
186
+ 3. **Provide actionable fixes:**
187
+ "To fix this, you should..."
188
+
189
+ 4. **Note patterns:**
190
+ "I noticed a pattern of... which suggests..."
191
+
192
+ 5. **Recommend next steps:**
193
+ "After fixing, re-run with `sfs run <specific-file>` to verify"
194
+
195
+ ## Example Analysis
196
+
197
+ ```markdown
198
+ ## Report Analysis: 2024-02-04T14-30-00
199
+
200
+ ### Summary
201
+ - **Pass rate:** 77.8% (7/9 passed)
202
+ - **Failed:** 1 test (US-SHOP-01c)
203
+ - **Skipped:** 1 test (US-SHOP-01d)
204
+
205
+ ### Critical Issue: US-SHOP-01c
206
+
207
+ **Root Cause:** Selector mismatch
208
+ The test uses `selector:testid:brand-filter` but the actual element has `data-testid="brand-dropdown"`.
209
+
210
+ **Fix:**
211
+ Update line 15 in US-SHOP-01c.sfs:
212
+ ```diff
213
+ - CLICK brand filter dropdown >> selector:testid:brand-filter
214
+ + CLICK brand filter dropdown >> selector:testid:brand-dropdown
215
+ ```
216
+
217
+ ### Skipped Test: US-SHOP-01d
218
+
219
+ **Root Cause:** API endpoint unavailable
220
+ The brands API returned 503. This may be a CI infrastructure issue.
221
+
222
+ **Recommendation:**
223
+ Add retry logic or check CI service health before running tests.
224
+
225
+ ### Observations
226
+ - US-CART-02a used fallback selectors, suggesting explicit selectors are outdated
227
+ - Consider running `sfs validate` to check all selectors
228
+
229
+ ### Next Steps
230
+ 1. Fix selector in US-SHOP-01c.sfs
231
+ 2. Update explicit selectors in US-CART-02a.sfs
232
+ 3. Investigate API availability in CI environment
233
+ 4. Re-run: `sfs run US-SHOP-01c.sfs US-CART-02a.sfs`
234
+ ```