sdd-full 4.8.0 → 4.8.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 (164) hide show
  1. package/bin.js +2 -2
  2. package/index.js +18 -12
  3. package/package.json +1 -1
  4. package/skills/README.md +155 -47
  5. package/skills/design-planning/ai-coding-rules/SKILL.md +13 -5
  6. package/skills/design-planning/design-to-code/SKILL.md +14 -5
  7. package/skills/design-planning/enterprise-spec/SKILL.md +13 -5
  8. package/skills/design-planning/flutter-av/SKILL.md +16 -5
  9. package/skills/design-planning/flutter-map/SKILL.md +14 -5
  10. package/skills/design-planning/function-sdd/SKILL.md +13 -5
  11. package/skills/design-planning/global-overlay-stack-standard/SKILL.md +14 -4
  12. package/skills/design-planning/ui-motion-interaction-standard/SKILL.md +14 -4
  13. package/skills/design-planning/ui-sdd-specialized/SKILL.md +14 -5
  14. package/skills/development-execution/flutter-errors/SKILL.md +15 -5
  15. package/skills/quality-assurance/bdd-acceptance/SKILL.md +14 -5
  16. package/skills/quality-assurance/flutter-test/SKILL.md +16 -5
  17. package/skills/requirement-analysis/sdd/mock_sdd.md +156 -0
  18. package/skills/rules/project_rules.md +127 -538
  19. package/skills/rules/user_rules.md +263 -0
  20. package/skills/special-tools/env-check/SKILL.md +13 -5
  21. package/skills/special-tools/ios-full-auto-debug/SKILL.md +15 -5
  22. package/skills/VERSION.md +0 -310
  23. package/skills/flutter-skills/.github/dependabot.yaml +0 -15
  24. package/skills/flutter-skills/.github/workflows/dart_skills_lint_workflow.yaml +0 -68
  25. package/skills/flutter-skills/.github/workflows/skills_tool.yaml +0 -51
  26. package/skills/flutter-skills/CODE_OF_CONDUCT.md +0 -3
  27. package/skills/flutter-skills/CONTRIBUTING.md +0 -36
  28. package/skills/flutter-skills/LICENSE +0 -26
  29. package/skills/flutter-skills/README.md +0 -50
  30. package/skills/flutter-skills/pubspec.yaml +0 -9
  31. package/skills/flutter-skills/resources/flutter_skills.yaml +0 -434
  32. package/skills/flutter-skills/skills/flutter-add-integration-test/SKILL.md +0 -163
  33. package/skills/flutter-skills/skills/flutter-add-widget-preview/SKILL.md +0 -145
  34. package/skills/flutter-skills/skills/flutter-add-widget-test/SKILL.md +0 -154
  35. package/skills/flutter-skills/skills/flutter-apply-architecture-best-practices/SKILL.md +0 -162
  36. package/skills/flutter-skills/skills/flutter-build-responsive-layout/SKILL.md +0 -139
  37. package/skills/flutter-skills/skills/flutter-fix-layout-issues/SKILL.md +0 -130
  38. package/skills/flutter-skills/skills/flutter-implement-json-serialization/SKILL.md +0 -153
  39. package/skills/flutter-skills/skills/flutter-setup-declarative-routing/SKILL.md +0 -255
  40. package/skills/flutter-skills/skills/flutter-setup-localization/SKILL.md +0 -210
  41. package/skills/flutter-skills/skills/flutter-use-http-package/SKILL.md +0 -175
  42. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/add-dart-lint-validation-rule/SKILL.md +0 -196
  43. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-best-practices/SKILL.md +0 -65
  44. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-checks-migration/SKILL.md +0 -158
  45. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-cli-app-best-practices/SKILL.md +0 -168
  46. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-doc-validation/SKILL.md +0 -87
  47. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-long-lines/SKILL.md +0 -101
  48. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-matcher-best-practices/SKILL.md +0 -136
  49. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-modern-features/SKILL.md +0 -266
  50. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-package-maintenance/SKILL.md +0 -92
  51. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-test-coverage/SKILL.md +0 -92
  52. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-test-coverage/example/lib/src/calculator.dart +0 -7
  53. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-test-coverage/example/pubspec.yaml +0 -8
  54. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-test-coverage/example/test/calculator_test.dart +0 -11
  55. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-test-coverage/scripts/interpret_coverage.dart +0 -95
  56. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-test-coverage/scripts/pubspec.yaml +0 -6
  57. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-test-coverage/scripts/test/interpret_coverage_test.dart +0 -93
  58. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/dart-test-fundamentals/SKILL.md +0 -173
  59. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/definition-of-done/SKILL.md +0 -27
  60. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/flutter_skills_ignore.json +0 -3
  61. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/grill-me/SKILL.md +0 -10
  62. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/ignore.json +0 -3
  63. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/test-driven-development/SKILL.md +0 -371
  64. package/skills/flutter-skills/tool/dart_skills_lint/.agents/skills/test-driven-development/testing-anti-patterns.md +0 -299
  65. package/skills/flutter-skills/tool/dart_skills_lint/AUTHORS +0 -7
  66. package/skills/flutter-skills/tool/dart_skills_lint/CHANGELOG.md +0 -12
  67. package/skills/flutter-skills/tool/dart_skills_lint/CONTRIBUTING.md +0 -51
  68. package/skills/flutter-skills/tool/dart_skills_lint/LICENSE +0 -27
  69. package/skills/flutter-skills/tool/dart_skills_lint/README.md +0 -203
  70. package/skills/flutter-skills/tool/dart_skills_lint/analysis_options.yaml +0 -296
  71. package/skills/flutter-skills/tool/dart_skills_lint/bench/README.md +0 -23
  72. package/skills/flutter-skills/tool/dart_skills_lint/bench/baseline_throughput.dart +0 -230
  73. package/skills/flutter-skills/tool/dart_skills_lint/bin/cli.dart +0 -10
  74. package/skills/flutter-skills/tool/dart_skills_lint/dart_skills_lint.yaml +0 -14
  75. package/skills/flutter-skills/tool/dart_skills_lint/documentation/feature_design_docs/PRODUCTION_READYNESS.md +0 -48
  76. package/skills/flutter-skills/tool/dart_skills_lint/documentation/feature_design_docs/completion_migration_plan.md +0 -99
  77. package/skills/flutter-skills/tool/dart_skills_lint/documentation/feature_design_docs/legacy_patterns_report.md +0 -110
  78. package/skills/flutter-skills/tool/dart_skills_lint/documentation/feature_design_docs/pub_vs_skill_report.md +0 -56
  79. package/skills/flutter-skills/tool/dart_skills_lint/documentation/knowledge/SPECIFICATION.md +0 -79
  80. package/skills/flutter-skills/tool/dart_skills_lint/documentation/knowledge/architecture_overview.md +0 -64
  81. package/skills/flutter-skills/tool/dart_skills_lint/lib/dart_skills_lint.dart +0 -11
  82. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/config_parser.dart +0 -156
  83. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/entry_point.dart +0 -354
  84. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/fixable_rule.dart +0 -20
  85. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/analysis_severity.dart +0 -15
  86. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/check_type.dart +0 -17
  87. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/ignore_entry.dart +0 -34
  88. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/ignore_entry.g.dart +0 -19
  89. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/skill_context.dart +0 -27
  90. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/skill_rule.dart +0 -27
  91. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/skills_ignores.dart +0 -26
  92. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/skills_ignores.g.dart +0 -24
  93. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/models/validation_error.dart +0 -31
  94. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/rule_registry.dart +0 -79
  95. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/rules/absolute_paths_rule.dart +0 -74
  96. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/rules/description_length_rule.dart +0 -49
  97. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/rules/disallowed_field_rule.dart +0 -61
  98. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/rules/name_format_rule.dart +0 -167
  99. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/rules/relative_paths_rule.dart +0 -72
  100. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/rules/trailing_whitespace_rule.dart +0 -93
  101. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/rules/valid_yaml_metadata_rule.dart +0 -74
  102. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/skills_ignores_storage.dart +0 -36
  103. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/validation_session.dart +0 -559
  104. package/skills/flutter-skills/tool/dart_skills_lint/lib/src/validator.dart +0 -238
  105. package/skills/flutter-skills/tool/dart_skills_lint/pubspec.yaml +0 -28
  106. package/skills/flutter-skills/tool/dart_skills_lint/skills/README.md +0 -10
  107. package/skills/flutter-skills/tool/dart_skills_lint/skills/dart-skills-lint-validation/SKILL.md +0 -195
  108. package/skills/flutter-skills/tool/dart_skills_lint/skills-lock.json +0 -75
  109. package/skills/flutter-skills/tool/dart_skills_lint/test/absolute_paths_test.dart +0 -167
  110. package/skills/flutter-skills/tool/dart_skills_lint/test/cli_integration_test.dart +0 -683
  111. package/skills/flutter-skills/tool/dart_skills_lint/test/config_file_test.dart +0 -292
  112. package/skills/flutter-skills/tool/dart_skills_lint/test/custom_rule_test.dart +0 -122
  113. package/skills/flutter-skills/tool/dart_skills_lint/test/directory_structure_test.dart +0 -163
  114. package/skills/flutter-skills/tool/dart_skills_lint/test/field_constraints_test.dart +0 -178
  115. package/skills/flutter-skills/tool/dart_skills_lint/test/fixer_test.dart +0 -172
  116. package/skills/flutter-skills/tool/dart_skills_lint/test/ignore_models_test.dart +0 -63
  117. package/skills/flutter-skills/tool/dart_skills_lint/test/metadata_validation_test.dart +0 -116
  118. package/skills/flutter-skills/tool/dart_skills_lint/test/relative_path_flag_test.dart +0 -70
  119. package/skills/flutter-skills/tool/dart_skills_lint/test/relative_paths_test.dart +0 -172
  120. package/skills/flutter-skills/tool/dart_skills_lint/test/resolve_rules_test.dart +0 -82
  121. package/skills/flutter-skills/tool/dart_skills_lint/test/rule_naming_test.dart +0 -29
  122. package/skills/flutter-skills/tool/dart_skills_lint/test/skills_ignores_storage_test.dart +0 -89
  123. package/skills/flutter-skills/tool/dart_skills_lint/test/test_utils.dart +0 -19
  124. package/skills/flutter-skills/tool/dart_skills_lint/test/trailing_whitespace_test.dart +0 -152
  125. package/skills/flutter-skills/tool/generator/README.md +0 -150
  126. package/skills/flutter-skills/tool/generator/analysis_options.yaml +0 -143
  127. package/skills/flutter-skills/tool/generator/bin/skills.dart +0 -73
  128. package/skills/flutter-skills/tool/generator/lib/src/commands/base_skill_command.dart +0 -87
  129. package/skills/flutter-skills/tool/generator/lib/src/commands/base_yaml_command.dart +0 -83
  130. package/skills/flutter-skills/tool/generator/lib/src/commands/generate_skill_command.dart +0 -92
  131. package/skills/flutter-skills/tool/generator/lib/src/commands/update_readme_command.dart +0 -150
  132. package/skills/flutter-skills/tool/generator/lib/src/commands/update_skill_command.dart +0 -97
  133. package/skills/flutter-skills/tool/generator/lib/src/commands/validate_skill_command.dart +0 -284
  134. package/skills/flutter-skills/tool/generator/lib/src/models/skill_params.dart +0 -41
  135. package/skills/flutter-skills/tool/generator/lib/src/services/gemini_service.dart +0 -310
  136. package/skills/flutter-skills/tool/generator/lib/src/services/markdown_converter.dart +0 -226
  137. package/skills/flutter-skills/tool/generator/lib/src/services/prompts.dart +0 -72
  138. package/skills/flutter-skills/tool/generator/lib/src/services/resource_fetcher_service.dart +0 -84
  139. package/skills/flutter-skills/tool/generator/lib/src/services/skill_instructions.dart +0 -30
  140. package/skills/flutter-skills/tool/generator/pubspec.yaml +0 -32
  141. package/skills/flutter-skills/tool/generator/test/commands/base_skill_command_test.dart +0 -131
  142. package/skills/flutter-skills/tool/generator/test/commands/validate_skills_input_test.dart +0 -263
  143. package/skills/flutter-skills/tool/generator/test/custom_skill_rules/last_modified_rule.dart +0 -32
  144. package/skills/flutter-skills/tool/generator/test/generate_skills_retry_test.dart +0 -105
  145. package/skills/flutter-skills/tool/generator/test/generate_skills_test.dart +0 -519
  146. package/skills/flutter-skills/tool/generator/test/lint_skills_test.dart +0 -34
  147. package/skills/flutter-skills/tool/generator/test/markdown_converter_test.dart +0 -103
  148. package/skills/flutter-skills/tool/generator/test/markdown_table_test.dart +0 -131
  149. package/skills/flutter-skills/tool/generator/test/models/skill_params_test.dart +0 -37
  150. package/skills/flutter-skills/tool/generator/test/services/gemini_service_test.dart +0 -291
  151. package/skills/flutter-skills/tool/generator/test/services/markdown_converter_test.dart +0 -156
  152. package/skills/flutter-skills/tool/generator/test/services/resource_fetcher_service_test.dart +0 -188
  153. package/skills/flutter-skills/tool/generator/test/update_skills_test.dart +0 -241
  154. package/skills/flutter-skills/tool/generator/test/validate_skills_test.dart +0 -728
  155. /package/skills/{.agents → flutter}/skills/flutter-add-integration-test/SKILL.md +0 -0
  156. /package/skills/{.agents → flutter}/skills/flutter-add-widget-preview/SKILL.md +0 -0
  157. /package/skills/{.agents → flutter}/skills/flutter-add-widget-test/SKILL.md +0 -0
  158. /package/skills/{.agents → flutter}/skills/flutter-apply-architecture-best-practices/SKILL.md +0 -0
  159. /package/skills/{.agents → flutter}/skills/flutter-build-responsive-layout/SKILL.md +0 -0
  160. /package/skills/{.agents → flutter}/skills/flutter-fix-layout-issues/SKILL.md +0 -0
  161. /package/skills/{.agents → flutter}/skills/flutter-implement-json-serialization/SKILL.md +0 -0
  162. /package/skills/{.agents → flutter}/skills/flutter-setup-declarative-routing/SKILL.md +0 -0
  163. /package/skills/{.agents → flutter}/skills/flutter-setup-localization/SKILL.md +0 -0
  164. /package/skills/{.agents → flutter}/skills/flutter-use-http-package/SKILL.md +0 -0
@@ -1,167 +0,0 @@
1
- // Copyright (c) 2026, the Dart project authors. Please see the AUTHORS file
2
- // for details. All rights reserved. Use of this source code is governed by a
3
- // BSD-style license that can be found in the LICENSE file.
4
-
5
- import 'dart:io';
6
-
7
- import 'package:dart_skills_lint/src/models/analysis_severity.dart';
8
- import 'package:dart_skills_lint/src/models/skill_context.dart';
9
-
10
- import 'package:dart_skills_lint/src/rules/absolute_paths_rule.dart';
11
- import 'package:dart_skills_lint/src/rules/relative_paths_rule.dart';
12
- import 'package:dart_skills_lint/src/validator.dart';
13
- import 'package:test/test.dart';
14
-
15
- import 'test_utils.dart';
16
-
17
- void main() {
18
- group('Absolute Paths Validation', () {
19
- late Directory tempDir;
20
-
21
- setUp(() async {
22
- tempDir = await Directory.systemTemp.createTemp('absolute_path_test.');
23
- });
24
-
25
- tearDown(() async {
26
- if (tempDir.existsSync()) {
27
- await tempDir.delete(recursive: true);
28
- }
29
- });
30
-
31
- test('flags absolute path starting with / as warning by default', () async {
32
- final Directory skillDir = await Directory('${tempDir.path}/test-skill').create();
33
- await File('${skillDir.path}/SKILL.md').writeAsString(
34
- '${buildFrontmatter(name: 'test-skill')}[Absolute link](/absolute/path.md)\n',
35
- );
36
-
37
- final validator = Validator();
38
- final ValidationResult result = await validator.validate(skillDir);
39
-
40
- expect(result.isValid, isTrue);
41
- expect(
42
- result.warnings,
43
- contains(contains('Absolute filepath found in link: /absolute/path.md')),
44
- );
45
- });
46
-
47
- test('flags windows absolute path starting with drive letter as error', () async {
48
- final Directory skillDir = await Directory('${tempDir.path}/test-skill').create();
49
- await File('${skillDir.path}/SKILL.md').writeAsString(
50
- '${buildFrontmatter(name: 'test-skill')}[Windows absolute link](C:\\absolute\\path.md)\n',
51
- );
52
-
53
- final validator = Validator();
54
- final ValidationResult result = await validator.validate(skillDir);
55
-
56
- expect(result.isValid, isTrue);
57
- expect(
58
- result.warnings,
59
- contains(contains(r'Absolute filepath found in link: C:\absolute\path.md')),
60
- );
61
- });
62
-
63
- test('ignores valid relative paths resembling windows drives', () async {
64
- final Directory skillDir = await Directory('${tempDir.path}/test-skill').create();
65
- await File(
66
- '${skillDir.path}/SKILL.md',
67
- ).writeAsString('${buildFrontmatter(name: 'test-skill')}[Relative link](C:relative.md)\n');
68
-
69
- final validator = Validator(
70
- ruleOverrides: {RelativePathsRule.ruleName: AnalysisSeverity.disabled},
71
- );
72
- final ValidationResult result = await validator.validate(skillDir);
73
-
74
- expect(result.isValid, isTrue);
75
- expect(result.errors, isEmpty);
76
- expect(result.warnings, isEmpty);
77
- });
78
-
79
- test('ignores ordinary file links', () async {
80
- final Directory skillDir = await Directory('${tempDir.path}/test-skill').create();
81
- await File(
82
- '${skillDir.path}/SKILL.md',
83
- ).writeAsString('${buildFrontmatter(name: 'test-skill')}[Relative link](file.md)\n');
84
-
85
- final validator = Validator(
86
- ruleOverrides: {RelativePathsRule.ruleName: AnalysisSeverity.disabled},
87
- );
88
- final ValidationResult result = await validator.validate(skillDir);
89
-
90
- expect(result.isValid, isTrue);
91
- expect(result.errors, isEmpty);
92
- expect(result.warnings, isEmpty);
93
- });
94
- test('ignores absolute paths when disabled', () async {
95
- final Directory skillDir = await Directory('${tempDir.path}/test-skill').create();
96
- await File('${skillDir.path}/SKILL.md').writeAsString(
97
- '${buildFrontmatter(name: 'test-skill')}Body with [broken link](missing.md) and [absolute link](/absolute/path.md)',
98
- );
99
-
100
- final validator = Validator(
101
- ruleOverrides: {AbsolutePathsRule.ruleName: AnalysisSeverity.disabled},
102
- );
103
- final ValidationResult result = await validator.validate(skillDir);
104
-
105
- expect(result.isValid, isTrue);
106
- expect(result.errors, isEmpty);
107
- expect(result.warnings, isEmpty);
108
- });
109
-
110
- test(
111
- 'flags absolute path as warning when absolutePathsSeverity: AnalysisSeverity.warning',
112
- () async {
113
- final Directory skillDir = await Directory('${tempDir.path}/test-skill').create();
114
- await File('${skillDir.path}/SKILL.md').writeAsString(
115
- '${buildFrontmatter(name: 'test-skill')}Body with [absolute link](/absolute/path.md)',
116
- );
117
-
118
- final validator = Validator(
119
- ruleOverrides: {AbsolutePathsRule.ruleName: AnalysisSeverity.warning},
120
- );
121
- final ValidationResult result = await validator.validate(skillDir);
122
-
123
- expect(result.isValid, isTrue); // Warnings don't fail validation
124
- expect(result.errors, isEmpty);
125
- expect(
126
- result.warnings,
127
- contains(contains('Absolute filepath found in link: /absolute/path.md')),
128
- );
129
- },
130
- );
131
-
132
- test('fixes absolute path to relative if file exists', () async {
133
- final Directory skillDir = await Directory('${tempDir.path}/test-skill').create();
134
- final File targetFile = await File('${tempDir.path}/target.md').create();
135
-
136
- await File(
137
- '${skillDir.path}/SKILL.md',
138
- ).writeAsString('${buildFrontmatter(name: 'test-skill')}[Link](${targetFile.path})\n');
139
-
140
- final rule = AbsolutePathsRule();
141
- final file = File('${skillDir.path}/SKILL.md');
142
- final String content = await file.readAsString();
143
- final context = SkillContext(directory: skillDir, rawContent: content);
144
-
145
- final String fixedContent = await rule.fix('SKILL.md', content, context.directory);
146
-
147
- expect(fixedContent, contains('(../target.md)'));
148
- });
149
-
150
- test('does not fix absolute path if file does not exist', () async {
151
- final Directory skillDir = await Directory('${tempDir.path}/test-skill').create();
152
-
153
- await File(
154
- '${skillDir.path}/SKILL.md',
155
- ).writeAsString('${buildFrontmatter(name: 'test-skill')}[Link](/non/existent/file.md)\n');
156
-
157
- final rule = AbsolutePathsRule();
158
- final file = File('${skillDir.path}/SKILL.md');
159
- final String content = await file.readAsString();
160
- final context = SkillContext(directory: skillDir, rawContent: content);
161
-
162
- final String fixedContent = await rule.fix('SKILL.md', content, context.directory);
163
-
164
- expect(fixedContent, contains('(/non/existent/file.md)'));
165
- });
166
- });
167
- }