@smartsoft001/pro-claude-plugins 0.2.0

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 (198) hide show
  1. package/.claude-plugin/marketplace.json +26 -0
  2. package/README.md +56 -0
  3. package/package.json +14 -0
  4. package/plugins/flow/.claude-plugin/README.md +91 -0
  5. package/plugins/flow/.claude-plugin/merge-permissions.js +115 -0
  6. package/plugins/flow/.claude-plugin/plugin.json +5 -0
  7. package/plugins/flow/.claude-plugin/settings.template.json +86 -0
  8. package/plugins/flow/agents/angular-component-scaffolder.md +176 -0
  9. package/plugins/flow/agents/angular-directive-builder.md +154 -0
  10. package/plugins/flow/agents/angular-guard-builder.md +244 -0
  11. package/plugins/flow/agents/angular-jest-test-writer.md +475 -0
  12. package/plugins/flow/agents/angular-pipe-builder.md +170 -0
  13. package/plugins/flow/agents/angular-resolver-builder.md +287 -0
  14. package/plugins/flow/agents/angular-service-builder.md +162 -0
  15. package/plugins/flow/agents/angular-signal-state-builder.md +340 -0
  16. package/plugins/flow/agents/angular-test-diagnostician.md +279 -0
  17. package/plugins/flow/agents/angular-testbed-configurator.md +315 -0
  18. package/plugins/flow/agents/arch-scaffolder.md +278 -0
  19. package/plugins/flow/agents/e2e-data-testid-injector.md +195 -0
  20. package/plugins/flow/agents/e2e-project-scaffolder.md +194 -0
  21. package/plugins/flow/agents/e2e-test-writer.md +357 -0
  22. package/plugins/flow/agents/shared-agent-evolver.md +294 -0
  23. package/plugins/flow/agents/shared-build-verifier.md +160 -0
  24. package/plugins/flow/agents/shared-config-updater.md +310 -0
  25. package/plugins/flow/agents/shared-coverage-enforcer.md +184 -0
  26. package/plugins/flow/agents/shared-error-handler.md +217 -0
  27. package/plugins/flow/agents/shared-file-creator.md +344 -0
  28. package/plugins/flow/agents/shared-impl-orchestrator.md +312 -0
  29. package/plugins/flow/agents/shared-impl-reporter.md +368 -0
  30. package/plugins/flow/agents/shared-impl-teammate.md +201 -0
  31. package/plugins/flow/agents/shared-linear-subtask-iterator.md +337 -0
  32. package/plugins/flow/agents/shared-logic-implementer.md +244 -0
  33. package/plugins/flow/agents/shared-maia-api.md +26 -0
  34. package/plugins/flow/agents/shared-parallelization-analyzer.md +343 -0
  35. package/plugins/flow/agents/shared-performance-validator.md +168 -0
  36. package/plugins/flow/agents/shared-plan-perspective.md +271 -0
  37. package/plugins/flow/agents/shared-project-standardizer.md +205 -0
  38. package/plugins/flow/agents/shared-report-synthesizer.md +188 -0
  39. package/plugins/flow/agents/shared-review-teammate.md +189 -0
  40. package/plugins/flow/agents/shared-security-scanner.md +186 -0
  41. package/plugins/flow/agents/shared-style-enforcer.md +230 -0
  42. package/plugins/flow/agents/shared-subtask-dependency-analyzer.md +189 -0
  43. package/plugins/flow/agents/shared-tdd-developer.md +350 -0
  44. package/plugins/flow/agents/shared-team-coordinator.md +192 -0
  45. package/plugins/flow/agents/shared-test-fixer.md +186 -0
  46. package/plugins/flow/agents/shared-test-runner.md +191 -0
  47. package/plugins/flow/agents/shared-ui-classifier.md +263 -0
  48. package/plugins/flow/agents/shared-verification-orchestrator.md +194 -0
  49. package/plugins/flow/agents/shared-verification-runner.md +140 -0
  50. package/plugins/flow/agents/ui-a11y-validator.md +305 -0
  51. package/plugins/flow/agents/ui-screenshot-reporter.md +329 -0
  52. package/plugins/flow/agents/ui-web-designer.md +214 -0
  53. package/plugins/flow/scripts/compute-session-tokens.sh +39 -0
  54. package/plugins/flow/skills/a11y-audit/SKILL.md +214 -0
  55. package/plugins/flow/skills/angular-patterns/SKILL.md +191 -0
  56. package/plugins/flow/skills/browser-capture/SKILL.md +238 -0
  57. package/plugins/flow/skills/commit/SKILL.md +259 -0
  58. package/plugins/flow/skills/debug-helper/SKILL.md +375 -0
  59. package/plugins/flow/skills/impl/SKILL.md +992 -0
  60. package/plugins/flow/skills/karpathy-guidelines/SKILL.md +72 -0
  61. package/plugins/flow/skills/linear-suggestion/SKILL.md +132 -0
  62. package/plugins/flow/skills/maia-files-delete/SKILL.md +59 -0
  63. package/plugins/flow/skills/maia-files-upload/SKILL.md +57 -0
  64. package/plugins/flow/skills/nx-conventions/SKILL.md +326 -0
  65. package/plugins/flow/skills/plan/SKILL.md +1033 -0
  66. package/plugins/flow/skills/push/SKILL.md +759 -0
  67. package/plugins/flow/skills/review/SKILL.md +443 -0
  68. package/plugins/flow/skills/test-e2e/SKILL.md +164 -0
  69. package/plugins/flow/skills/test-unit/SKILL.md +456 -0
  70. package/plugins/flow-external/.claude-plugin/README.md +146 -0
  71. package/plugins/flow-external/.claude-plugin/merge-permissions.js +94 -0
  72. package/plugins/flow-external/.claude-plugin/plugin.json +5 -0
  73. package/plugins/flow-external/.claude-plugin/settings.template.json +78 -0
  74. package/plugins/flow-external/agents/angular-component-scaffolder.md +271 -0
  75. package/plugins/flow-external/agents/angular-directive-builder.md +134 -0
  76. package/plugins/flow-external/agents/angular-guard-builder.md +73 -0
  77. package/plugins/flow-external/agents/angular-pipe-builder.md +90 -0
  78. package/plugins/flow-external/agents/angular-resolver-builder.md +79 -0
  79. package/plugins/flow-external/agents/angular-service-builder.md +168 -0
  80. package/plugins/flow-external/agents/angular-state-builder.md +263 -0
  81. package/plugins/flow-external/agents/shared-build-verifier.md +67 -0
  82. package/plugins/flow-external/agents/shared-impl-orchestrator.md +90 -0
  83. package/plugins/flow-external/agents/shared-impl-reporter.md +135 -0
  84. package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +70 -0
  85. package/plugins/flow-external/agents/shared-ui-classifier.md +38 -0
  86. package/plugins/flow-external/agents/ui-web-designer.md +203 -0
  87. package/plugins/flow-external/scripts/compute-session-tokens.sh +39 -0
  88. package/plugins/flow-external/skills/a11y-audit/SKILL.md +97 -0
  89. package/plugins/flow-external/skills/angular-cli-conventions/SKILL.md +268 -0
  90. package/plugins/flow-external/skills/angular-patterns/SKILL.md +182 -0
  91. package/plugins/flow-external/skills/browser-capture/SKILL.md +74 -0
  92. package/plugins/flow-external/skills/commit/SKILL.md +114 -0
  93. package/plugins/flow-external/skills/debug-helper/SKILL.md +135 -0
  94. package/plugins/flow-external/skills/impl/SKILL.md +218 -0
  95. package/plugins/flow-external/skills/karpathy-guidelines/SKILL.md +72 -0
  96. package/plugins/flow-external/skills/linear-suggestion/SKILL.md +62 -0
  97. package/plugins/flow-external/skills/maia-files-delete/SKILL.md +34 -0
  98. package/plugins/flow-external/skills/maia-files-upload/SKILL.md +41 -0
  99. package/plugins/flow-external/skills/plan/SKILL.md +334 -0
  100. package/plugins/flow-external/skills/push/SKILL.md +232 -0
  101. package/plugins/flow-legacy/.claude-plugin/README.md +143 -0
  102. package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +94 -0
  103. package/plugins/flow-legacy/.claude-plugin/plugin.json +5 -0
  104. package/plugins/flow-legacy/.claude-plugin/settings.template.json +79 -0
  105. package/plugins/flow-legacy/agents/angular-component-scaffolder.md +327 -0
  106. package/plugins/flow-legacy/agents/angular-directive-builder.md +253 -0
  107. package/plugins/flow-legacy/agents/angular-guard-builder.md +326 -0
  108. package/plugins/flow-legacy/agents/angular-pipe-builder.md +238 -0
  109. package/plugins/flow-legacy/agents/angular-resolver-builder.md +339 -0
  110. package/plugins/flow-legacy/agents/angular-service-builder.md +271 -0
  111. package/plugins/flow-legacy/agents/angular-state-builder.md +480 -0
  112. package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +174 -0
  113. package/plugins/flow-legacy/agents/shared-impl-reporter.md +232 -0
  114. package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +198 -0
  115. package/plugins/flow-legacy/agents/shared-tdd-developer.md +307 -0
  116. package/plugins/flow-legacy/agents/shared-test-runner.md +133 -0
  117. package/plugins/flow-legacy/agents/shared-ui-classifier.md +145 -0
  118. package/plugins/flow-legacy/scripts/compute-session-tokens.sh +39 -0
  119. package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +214 -0
  120. package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +346 -0
  121. package/plugins/flow-legacy/skills/browser-capture/SKILL.md +238 -0
  122. package/plugins/flow-legacy/skills/commit/SKILL.md +215 -0
  123. package/plugins/flow-legacy/skills/debug-helper/SKILL.md +395 -0
  124. package/plugins/flow-legacy/skills/impl/SKILL.md +710 -0
  125. package/plugins/flow-legacy/skills/karpathy-guidelines/SKILL.md +72 -0
  126. package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +132 -0
  127. package/plugins/flow-legacy/skills/maia-files-delete/SKILL.md +59 -0
  128. package/plugins/flow-legacy/skills/maia-files-upload/SKILL.md +57 -0
  129. package/plugins/flow-legacy/skills/nx-conventions/SKILL.md +368 -0
  130. package/plugins/flow-legacy/skills/plan/SKILL.md +742 -0
  131. package/plugins/flow-legacy/skills/push/SKILL.md +645 -0
  132. package/plugins/flow-legacy/skills/test-unit/SKILL.md +500 -0
  133. package/plugins/smart-pro/.claude-plugin/README.md +115 -0
  134. package/plugins/smart-pro/.claude-plugin/merge-permissions.js +129 -0
  135. package/plugins/smart-pro/.claude-plugin/plugin.json +5 -0
  136. package/plugins/smart-pro/.claude-plugin/settings.template.json +94 -0
  137. package/plugins/smart-pro/agents/angular-components/AGENT.md +214 -0
  138. package/plugins/smart-pro/hooks/CONFIG.md +198 -0
  139. package/plugins/smart-pro/hooks/README.md +139 -0
  140. package/plugins/smart-pro/hooks/audit_logger.py +107 -0
  141. package/plugins/smart-pro/hooks/auto_format.sh +11 -0
  142. package/plugins/smart-pro/hooks/hooks.json +79 -0
  143. package/plugins/smart-pro/hooks/safety_validator.py +129 -0
  144. package/plugins/smart-pro/hooks/sensitive_file_blocker.py +58 -0
  145. package/plugins/smart-pro/hooks/skill_validator.py +220 -0
  146. package/plugins/smart-pro/skills/angular-components-action-panel/SKILL.md +159 -0
  147. package/plugins/smart-pro/skills/angular-components-avatar/SKILL.md +142 -0
  148. package/plugins/smart-pro/skills/angular-components-badge/SKILL.md +110 -0
  149. package/plugins/smart-pro/skills/angular-components-breadcrumbs/SKILL.md +91 -0
  150. package/plugins/smart-pro/skills/angular-components-button/SKILL.md +146 -0
  151. package/plugins/smart-pro/skills/angular-components-button-group/SKILL.md +121 -0
  152. package/plugins/smart-pro/skills/angular-components-calendar/SKILL.md +78 -0
  153. package/plugins/smart-pro/skills/angular-components-card/SKILL.md +110 -0
  154. package/plugins/smart-pro/skills/angular-components-card-heading/SKILL.md +105 -0
  155. package/plugins/smart-pro/skills/angular-components-command-palette/SKILL.md +168 -0
  156. package/plugins/smart-pro/skills/angular-components-container/SKILL.md +93 -0
  157. package/plugins/smart-pro/skills/angular-components-description-list/SKILL.md +102 -0
  158. package/plugins/smart-pro/skills/angular-components-details/SKILL.md +70 -0
  159. package/plugins/smart-pro/skills/angular-components-divider/SKILL.md +110 -0
  160. package/plugins/smart-pro/skills/angular-components-drawer/SKILL.md +136 -0
  161. package/plugins/smart-pro/skills/angular-components-dropdown/SKILL.md +131 -0
  162. package/plugins/smart-pro/skills/angular-components-empty-state/SKILL.md +103 -0
  163. package/plugins/smart-pro/skills/angular-components-feed/SKILL.md +110 -0
  164. package/plugins/smart-pro/skills/angular-components-form/SKILL.md +77 -0
  165. package/plugins/smart-pro/skills/angular-components-grid-list/SKILL.md +91 -0
  166. package/plugins/smart-pro/skills/angular-components-input/SKILL.md +118 -0
  167. package/plugins/smart-pro/skills/angular-components-list/SKILL.md +75 -0
  168. package/plugins/smart-pro/skills/angular-components-list-container/SKILL.md +106 -0
  169. package/plugins/smart-pro/skills/angular-components-media-object/SKILL.md +133 -0
  170. package/plugins/smart-pro/skills/angular-components-modal/SKILL.md +159 -0
  171. package/plugins/smart-pro/skills/angular-components-multi-column-layout/SKILL.md +84 -0
  172. package/plugins/smart-pro/skills/angular-components-navbar/SKILL.md +93 -0
  173. package/plugins/smart-pro/skills/angular-components-notification/SKILL.md +147 -0
  174. package/plugins/smart-pro/skills/angular-components-page/SKILL.md +162 -0
  175. package/plugins/smart-pro/skills/angular-components-page-heading/SKILL.md +96 -0
  176. package/plugins/smart-pro/skills/angular-components-paging/SKILL.md +86 -0
  177. package/plugins/smart-pro/skills/angular-components-progress-bars/SKILL.md +94 -0
  178. package/plugins/smart-pro/skills/angular-components-searchbar/SKILL.md +113 -0
  179. package/plugins/smart-pro/skills/angular-components-section-heading/SKILL.md +156 -0
  180. package/plugins/smart-pro/skills/angular-components-select-menu/SKILL.md +101 -0
  181. package/plugins/smart-pro/skills/angular-components-sidebar-layout/SKILL.md +121 -0
  182. package/plugins/smart-pro/skills/angular-components-sidebar-navigation/SKILL.md +80 -0
  183. package/plugins/smart-pro/skills/angular-components-sign-in-form/SKILL.md +91 -0
  184. package/plugins/smart-pro/skills/angular-components-stacked-layout/SKILL.md +114 -0
  185. package/plugins/smart-pro/skills/angular-components-stacked-list/SKILL.md +93 -0
  186. package/plugins/smart-pro/skills/angular-components-stats/SKILL.md +87 -0
  187. package/plugins/smart-pro/skills/angular-components-table/SKILL.md +98 -0
  188. package/plugins/smart-pro/skills/angular-components-tabs/SKILL.md +99 -0
  189. package/plugins/smart-pro/skills/angular-components-textarea/SKILL.md +111 -0
  190. package/plugins/smart-pro/skills/angular-components-toggle/SKILL.md +109 -0
  191. package/plugins/smart-pro/skills/angular-components-vertical-navigation/SKILL.md +139 -0
  192. package/plugins/smart-pro/skills/audit-log/SKILL.md +82 -0
  193. package/plugins/smart-pro/skills/format-code/SKILL.md +46 -0
  194. package/plugins/smart-pro/skills/project-conventions/SKILL.md +90 -0
  195. package/plugins/smart-pro/skills/safety-check/SKILL.md +0 -0
  196. package/src/index.d.ts +6 -0
  197. package/src/index.js +7 -0
  198. package/src/index.js.map +1 -0
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "smart-pro",
3
+ "description": "Smart-pro Integration Plugins",
4
+ "owner": {
5
+ "name": "Smartflow",
6
+ "email": "office@smartflow.biz.pl"
7
+ },
8
+ "plugins": [
9
+ {
10
+ "name": "smart-pro",
11
+ "source": "./plugins/smart-pro"
12
+ },
13
+ {
14
+ "name": "flow",
15
+ "source": "./plugins/flow"
16
+ },
17
+ {
18
+ "name": "flow-legacy",
19
+ "source": "./plugins/flow-legacy"
20
+ },
21
+ {
22
+ "name": "flow-external",
23
+ "source": "./plugins/flow-external"
24
+ }
25
+ ]
26
+ }
package/README.md ADDED
@@ -0,0 +1,56 @@
1
+ # @smartsoft001/pro-claude-plugins
2
+
3
+ ![npm](https://img.shields.io/npm/v/@smartsoft001/pro-claude-plugins) ![downloads](https://img.shields.io/npm/dm/@smartsoft001/pro-claude-plugins)
4
+
5
+ Claude Code plugins marketplace for the `@smartsoft001/pro-*` framework.
6
+
7
+ ## Installation
8
+
9
+ ### External consumers (after publish)
10
+
11
+ ```bash
12
+ npm i @smartsoft001/pro-claude-plugins
13
+ claude plugin marketplace add ./node_modules/@smartsoft001/pro-claude-plugins
14
+ ```
15
+
16
+ ### Local development consumption (this repo)
17
+
18
+ The source-of-truth marketplace lives in `src/.claude-plugin/marketplace.json`. Run once after cloning:
19
+
20
+ ```bash
21
+ claude plugin marketplace add ./packages/shared/claude-plugins/src
22
+ claude plugin list
23
+ ```
24
+
25
+ The command is idempotent — safe to re-run.
26
+
27
+ ## Plugins
28
+
29
+ ### smart-pro
30
+
31
+ Pro UI components for `@smartsoft001/pro-angular` (Tailwind). Includes hooks for skill activation, safety validation, formatting, and audit logging.
32
+
33
+ | Documentation | Description |
34
+ |---------------|-------------|
35
+ | [README](src/plugins/smart-pro/hooks/README.md) | Overview of available hooks |
36
+ | [CONFIG](src/plugins/smart-pro/hooks/CONFIG.md) | Configuration and customization guide |
37
+
38
+ ### flow
39
+
40
+ Development flow skills for Linear-driven development workflow (current Angular version).
41
+
42
+ ### flow-legacy
43
+
44
+ Development flow skills for legacy Angular 14 projects with Linear-driven workflow.
45
+
46
+ ### flow-external
47
+
48
+ Development flow skills for standalone Angular 6-11 projects without framework (Angular CLI, Karma/Jasmine, Bootstrap 4).
49
+
50
+ ## Changelog
51
+
52
+ All notable changes to this project will be documented in the [CHANGELOG](../../../CHANGELOG.md).
53
+
54
+ ## License
55
+
56
+ This project is licensed under the MIT License.
package/package.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "@smartsoft001/pro-claude-plugins",
3
+ "version": "0.2.0",
4
+ "publishConfig": {
5
+ "access": "restricted"
6
+ },
7
+ "scripts": {
8
+ "postinstall": "claude plugin update smart-pro@smart-pro flow@smart-pro flow-legacy@smart-pro flow-external@smart-pro --scope project || true"
9
+ },
10
+ "types": "./src/index.d.ts",
11
+ "module": "./src/index.js",
12
+ "type": "module",
13
+ "main": "./src/index.js"
14
+ }
@@ -0,0 +1,91 @@
1
+ # Flow Plugin for Claude Code
2
+
3
+ Development flow skills for Linear-driven development workflow.
4
+
5
+ ## Workflow Skills
6
+
7
+ | Skill | Description |
8
+ |-------|-------------|
9
+ | `/commit` | Create conventional commit based on Linear task |
10
+ | `/impl` | Implement plans from `plan.md` attachment on Linear issue; orchestration saved as `orchestration.md` attachment |
11
+ | `/plan` | Create implementation plan, save as `plan.md` attachment on Linear issue, add `AI Plan` label |
12
+ | `/push` | Push changes and update Linear status (keeps `plan.md` / `orchestration.md` attachments on the issue) |
13
+
14
+ ## Installation
15
+
16
+ ### 1. Enable plugin in project's `.claude/settings.json`:
17
+
18
+ ```json
19
+ {
20
+ "enabledPlugins": {
21
+ "flow@smart-pro": true
22
+ }
23
+ }
24
+ ```
25
+
26
+ ### 2. Merge permissions from template
27
+
28
+ Copy permissions from `settings.template.json` to your project's `.claude/settings.json`.
29
+
30
+ **Quick merge script:**
31
+
32
+ ```bash
33
+ # From project root
34
+ node -e "
35
+ const template = require('node_modules/@smartsoft001/pro-claude-plugins/plugins/flow/.claude-plugin/settings.template.json');
36
+ const settings = require('.claude/settings.json');
37
+
38
+ settings.permissions = settings.permissions || { allow: [], deny: [], ask: [] };
39
+ settings.permissions.allow = [...new Set([...settings.permissions.allow, ...template.permissions.allow])];
40
+ settings.permissions.ask = [...new Set([...settings.permissions.ask, ...template.permissions.ask])];
41
+
42
+ require('fs').writeFileSync('.claude/settings.json', JSON.stringify(settings, null, 2));
43
+ console.log('Permissions merged!');
44
+ "
45
+ ```
46
+
47
+ ## Required MCP Servers
48
+
49
+ Configure these in your `.mcp.json`:
50
+
51
+ - `linear` - Linear API integration (MCP prefix `mcp__linear__`)
52
+ - `playwright` - Browser automation for screenshots
53
+
54
+ ### Linear MCP tool dependencies
55
+
56
+ `/plan`, `/impl`, and `/push` depend on the following `mcp__linear__*` tools (in addition to the standard comment/issue tools):
57
+
58
+ - `create_attachment` (base64 upload), `get_attachment`, `delete_attachment` — for persisting `plan.md` / `orchestration.md` on issues (attachments are also returned by `get_issue`)
59
+ - `list_issue_labels` — to find the workspace-level `AI Plan` label (the label is pre-configured organization-wide; `/plan` does not create it)
60
+
61
+ Run `/mcp` after authenticating the Linear MCP server to see the exact loaded tool names. If a tool is exposed under a different name in your deployment, update `settings.template.json` and the `allowed-tools` lists in the three skills accordingly.
62
+
63
+ ## Permission Strategy
64
+
65
+ ### Automatic (allow)
66
+ - Git read operations (status, diff, log, show)
67
+ - Nx commands (test, lint, build)
68
+ - Linear API (read/write issues, comments)
69
+ - Playwright (screenshots)
70
+ - Utility skills
71
+
72
+ ### Requires Confirmation (ask)
73
+ - Workflow skills (/commit, /impl, /plan, /push)
74
+ - `git commit` - creating commits
75
+ - `git push` - pushing to remote
76
+ - `gh pr create` - creating pull requests
77
+
78
+ ## Utility Skills
79
+
80
+ | Skill | Description |
81
+ |-------|-------------|
82
+ | `maia-files-upload` | Upload files to Maia API |
83
+ | `maia-files-delete` | Delete files from Maia API |
84
+ | `browser-capture` | Capture screenshots with Playwright |
85
+ | `linear-suggestion` | Create Linear issues for improvements |
86
+ | `test-unit` | Run unit tests with coverage |
87
+ | `a11y-audit` | Accessibility audit |
88
+
89
+ ## Agents
90
+
91
+ See `agents/` directory for full list of specialized agents used by flow skills.
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Merge flow plugin permissions into project's .claude/settings.json
4
+ *
5
+ * Usage:
6
+ * npx @smartsoft001/pro-claude-plugins flow:merge-permissions
7
+ *
8
+ * Or directly:
9
+ * node node_modules/@smartsoft001/pro-claude-plugins/plugins/flow/.claude-plugin/merge-permissions.js
10
+ */
11
+
12
+ const fs = require('fs');
13
+ const path = require('path');
14
+
15
+ const SETTINGS_PATH = path.join(process.cwd(), '.claude', 'settings.json');
16
+ const TEMPLATE_PATH = path.join(__dirname, 'settings.template.json');
17
+
18
+ function loadJson(filePath) {
19
+ try {
20
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'));
21
+ } catch (e) {
22
+ return null;
23
+ }
24
+ }
25
+
26
+ function mergeArrays(existing, template) {
27
+ return [...new Set([...existing, ...template])];
28
+ }
29
+
30
+ function main() {
31
+ console.log('Flow Plugin - Merge Permissions\n');
32
+
33
+ // Load template
34
+ const template = loadJson(TEMPLATE_PATH);
35
+ if (!template) {
36
+ console.error('ERROR: Could not load template from:', TEMPLATE_PATH);
37
+ process.exit(1);
38
+ }
39
+
40
+ // Load or create settings
41
+ let settings = loadJson(SETTINGS_PATH);
42
+ if (!settings) {
43
+ console.log('Creating new .claude/settings.json...');
44
+ fs.mkdirSync(path.dirname(SETTINGS_PATH), { recursive: true });
45
+ settings = { permissions: { allow: [], deny: [], ask: [] } };
46
+ }
47
+
48
+ // Ensure permissions structure exists
49
+ settings.permissions = settings.permissions || {
50
+ allow: [],
51
+ deny: [],
52
+ ask: [],
53
+ };
54
+ settings.permissions.allow = settings.permissions.allow || [];
55
+ settings.permissions.ask = settings.permissions.ask || [];
56
+ settings.permissions.deny = settings.permissions.deny || [];
57
+
58
+ // Count before
59
+ const beforeAllow = settings.permissions.allow.length;
60
+ const beforeAsk = settings.permissions.ask.length;
61
+
62
+ // Merge permissions
63
+ settings.permissions.allow = mergeArrays(
64
+ settings.permissions.allow,
65
+ template.permissions.allow,
66
+ );
67
+ settings.permissions.ask = mergeArrays(
68
+ settings.permissions.ask,
69
+ template.permissions.ask,
70
+ );
71
+
72
+ // Enable plugin
73
+ settings.enabledPlugins = settings.enabledPlugins || {};
74
+ settings.enabledPlugins['flow@smart-pro'] = true;
75
+
76
+ // Merge env (shallow merge — template values don't overwrite existing project values)
77
+ if (template.env) {
78
+ settings.env = settings.env || {};
79
+ let addedEnv = 0;
80
+ for (const [key, value] of Object.entries(template.env)) {
81
+ if (!(key in settings.env)) {
82
+ settings.env[key] = value;
83
+ addedEnv++;
84
+ }
85
+ }
86
+ }
87
+
88
+ // Write back
89
+ fs.writeFileSync(SETTINGS_PATH, JSON.stringify(settings, null, 2) + '\n');
90
+
91
+ // Report
92
+ const addedAllow = settings.permissions.allow.length - beforeAllow;
93
+ const addedAsk = settings.permissions.ask.length - beforeAsk;
94
+ const envKeys = template.env
95
+ ? Object.keys(template.env).filter((k) => !k.startsWith('_'))
96
+ : [];
97
+ const existingEnvKeys = settings.env ? Object.keys(settings.env) : [];
98
+
99
+ console.log('Permissions merged successfully!\n');
100
+ console.log(
101
+ ` allow: ${beforeAllow} -> ${settings.permissions.allow.length} (+${addedAllow})`,
102
+ );
103
+ console.log(
104
+ ` ask: ${beforeAsk} -> ${settings.permissions.ask.length} (+${addedAsk})`,
105
+ );
106
+ if (envKeys.length > 0) {
107
+ console.log(
108
+ ` env: ${envKeys.length} key(s) from template (existing values preserved)`,
109
+ );
110
+ }
111
+ console.log(`\nPlugin enabled: flow@smart-pro`);
112
+ console.log(`\nFile updated: ${SETTINGS_PATH}`);
113
+ }
114
+
115
+ main();
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "flow",
3
+ "description": "Development flow skills for Linear-driven development workflow",
4
+ "version": "0.0.1"
5
+ }
@@ -0,0 +1,86 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/anthropics/claude-code/main/schemas/settings.schema.json",
3
+ "_description": "Template permissions for flow@smart-pro plugin. Merge these into your project's .claude/settings.json",
4
+ "permissions": {
5
+ "allow": [
6
+ "Bash(git status:*)",
7
+ "Bash(git diff:*)",
8
+ "Bash(git log:*)",
9
+ "Bash(git show:*)",
10
+ "Bash(git add:*)",
11
+ "Bash(git fetch:*)",
12
+ "Bash(git pull:*)",
13
+ "Bash(gh run list:*)",
14
+ "Bash(gh run view:*)",
15
+ "Bash(gh pr list:*)",
16
+ "Bash(nx:*)",
17
+ "Bash(npx nx:*)",
18
+ "Bash(npx tsc:*)",
19
+ "Bash(npm start)",
20
+ "Bash(npm run format:*)",
21
+ "Bash(npm audit:*)",
22
+ "Bash(npm install:*)",
23
+ "Bash(source:*)",
24
+ "Bash(nvm use:*)",
25
+ "Bash(curl:*)",
26
+ "Bash(lsof:*)",
27
+ "Bash(ls:*)",
28
+ "Bash(find:*)",
29
+ "Bash(grep:*)",
30
+ "Bash(xargs:*)",
31
+ "Bash(sleep:*)",
32
+ "Bash(rm:*)",
33
+ "Bash(test:*)",
34
+ "Bash(for:*)",
35
+ "Bash(node:*)",
36
+ "Bash(mkdir:*)",
37
+ "mcp__linear__get_issue",
38
+ "mcp__linear__list_issues",
39
+ "mcp__linear__list_comments",
40
+ "mcp__linear__save_comment",
41
+ "mcp__linear__delete_comment",
42
+ "mcp__linear__save_issue",
43
+ "mcp__linear__list_issue_statuses",
44
+ "mcp__linear__create_attachment",
45
+ "mcp__linear__get_attachment",
46
+ "mcp__linear__delete_attachment",
47
+ "mcp__linear__list_issue_labels",
48
+ "mcp__playwright__browser_snapshot",
49
+ "mcp__playwright__browser_take_screenshot",
50
+ "mcp__playwright__browser_navigate",
51
+ "mcp__playwright__browser_close",
52
+ "mcp__playwright__browser_wait_for",
53
+ "mcp__playwright__browser_click",
54
+ "mcp__playwright__browser_resize",
55
+ "mcp__playwright__browser_evaluate",
56
+ "mcp__playwright__browser_console_messages",
57
+ "mcp__playwright__browser_press_key",
58
+ "mcp__playwright__browser_network_requests",
59
+ "Skill(flow:maia-files-upload)",
60
+ "Skill(flow:maia-files-delete)",
61
+ "Skill(flow:browser-capture)",
62
+ "Skill(flow:linear-suggestion)",
63
+ "Skill(flow:test-unit)",
64
+ "Skill(flow:a11y-audit)",
65
+ "Skill(flow:test-e2e)",
66
+ "Skill(flow:review)",
67
+ "Bash(npx playwright:*)"
68
+ ],
69
+ "ask": [
70
+ "Skill(flow:commit)",
71
+ "Skill(flow:impl)",
72
+ "Skill(flow:plan)",
73
+ "Skill(flow:push)",
74
+ "Skill(flow:review)",
75
+ "Bash(git commit:*)",
76
+ "Bash(git push:*)",
77
+ "Bash(gh pr create:*)"
78
+ ]
79
+ },
80
+ "enabledPlugins": {
81
+ "flow@smart-pro": true
82
+ },
83
+ "env": {
84
+ "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
85
+ }
86
+ }
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: angular-component-scaffolder
3
+ description: Create Angular standalone components with signals and modern patterns. Use when scaffolding new components following Angular 20+ best practices.
4
+ tools: Read, Write, Glob, Grep
5
+ skills: karpathy-guidelines
6
+ model: sonnet
7
+ color: '#DD0031'
8
+ ---
9
+
10
+ You are an expert at creating Angular standalone components following modern best practices.
11
+
12
+ ## Primary Responsibility
13
+
14
+ Create Angular components using Angular 20+ patterns including signals, standalone architecture, and modern control flow.
15
+
16
+ ## When to Use
17
+
18
+ - Creating new Angular components
19
+ - Scaffolding component structure with template and styles
20
+ - Setting up component with proper DI using inject()
21
+
22
+ ## Project-Specific Patterns
23
+
24
+ This project uses:
25
+
26
+ - **No explicit `standalone: true`** - Angular 19+ defaults to standalone
27
+ - **TranslatePipe** from `@ngx-translate/core` for i18n
28
+ - **CapitalizePipe** from project pipes
29
+ - **Tailwind CSS** with `smart-` prefix
30
+
31
+ ## Component Template
32
+
33
+ ### Basic Component
34
+
35
+ ```typescript
36
+ import { Component, signal, computed, inject } from '@angular/core';
37
+ import { TranslatePipe } from '@ngx-translate/core';
38
+
39
+ import { CapitalizePipe } from '../../pipes';
40
+
41
+ @Component({
42
+ selector: 'app-feature-name',
43
+ imports: [TranslatePipe, CapitalizePipe],
44
+ templateUrl: './feature-name.component.html',
45
+ })
46
+ export class FeatureNameComponent {
47
+ // Injected services (at top)
48
+ private readonly dataService = inject(DataService);
49
+
50
+ // Signals for local state
51
+ readonly isLoading = signal(false);
52
+ readonly data = signal<DataType[]>([]);
53
+
54
+ // Computed values for derived state
55
+ readonly itemCount = computed(() => this.data().length);
56
+ readonly hasData = computed(() => this.data().length > 0);
57
+ }
58
+ ```
59
+
60
+ ### Component with Inputs/Outputs
61
+
62
+ ```typescript
63
+ import { Component, input, output, model, signal } from '@angular/core';
64
+ import { TranslatePipe } from '@ngx-translate/core';
65
+
66
+ import { CapitalizePipe } from '../../pipes';
67
+
68
+ @Component({
69
+ selector: 'app-item-card',
70
+ imports: [TranslatePipe, CapitalizePipe],
71
+ templateUrl: './item-card.component.html',
72
+ })
73
+ export class ItemCardComponent {
74
+ // Required inputs
75
+ label = input.required<string>();
76
+ item = input.required<Item>();
77
+
78
+ // Optional input with default
79
+ showActions = input<boolean>(true);
80
+
81
+ // Input with transform
82
+ page = input<number, number>(1, {
83
+ transform: (val: number) => (val < 1 ? 1 : val),
84
+ });
85
+
86
+ // Output events
87
+ selected = output<Item>();
88
+ closed = output();
89
+
90
+ // Two-way binding (model)
91
+ searchText = model<string>('');
92
+
93
+ // Internal signals
94
+ isOpen = signal(false);
95
+
96
+ // Methods
97
+ toggleDropdown(force?: boolean) {
98
+ this.isOpen.update((val) => force ?? !val);
99
+ }
100
+ }
101
+ ```
102
+
103
+ ## Template Patterns
104
+
105
+ ### Modern Control Flow
106
+
107
+ ```html
108
+ @if (isLoading()) {
109
+ <app-spinner />
110
+ } @else if (error()) {
111
+ <app-error [message]="error()?.message" />
112
+ } @else {
113
+ <div class="smart-grid smart-gap-4">
114
+ @for (item of items(); track item.id) {
115
+ <app-item-card [item]="item" (selected)="onSelect($event)" />
116
+ } @empty {
117
+ <p class="smart-text-gray-500">
118
+ {{ 'COMMON.noItems' | translate | capitalize }}
119
+ </p>
120
+ }
121
+ </div>
122
+ }
123
+ ```
124
+
125
+ ## File Structure
126
+
127
+ ```
128
+ feature-name/
129
+ feature-name.component.ts # Component class
130
+ feature-name.component.html # Template
131
+ feature-name.component.scss # Styles (optional)
132
+ ```
133
+
134
+ ## Scaffolding Checklist
135
+
136
+ - [ ] NO `standalone: true` (Angular 19+ default)
137
+ - [ ] Uses `inject()` for DI at top of class
138
+ - [ ] Uses `signal()` for internal state
139
+ - [ ] Uses `computed()` for derived values
140
+ - [ ] Uses `input()`/`input.required()` for inputs
141
+ - [ ] Uses `output()` for outputs
142
+ - [ ] Uses `model()` for two-way binding
143
+ - [ ] Uses `@if`/`@for` in template
144
+ - [ ] Has `track` in all `@for` loops
145
+ - [ ] Imports `TranslatePipe` if using translations
146
+ - [ ] Imports `CapitalizePipe` if capitalizing text
147
+ - [ ] Tailwind classes with `smart-` prefix
148
+
149
+ ## Output Format
150
+
151
+ ```markdown
152
+ ## Component Scaffolded
153
+
154
+ ### Files Created
155
+
156
+ | File | Purpose |
157
+ | ----------------------------- | --------------- |
158
+ | `feature-name.component.ts` | Component class |
159
+ | `feature-name.component.html` | Template |
160
+
161
+ ### Component API
162
+
163
+ **Inputs:**
164
+
165
+ - `item: Item` (required)
166
+ - `showActions: boolean` (default: true)
167
+
168
+ **Outputs:**
169
+
170
+ - `selected: Item`
171
+
172
+ ### Next Steps
173
+
174
+ 1. Implement component logic
175
+ 2. Add to routing or parent component
176
+ ```