@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.
- package/.claude-plugin/marketplace.json +26 -0
- package/README.md +56 -0
- package/package.json +14 -0
- package/plugins/flow/.claude-plugin/README.md +91 -0
- package/plugins/flow/.claude-plugin/merge-permissions.js +115 -0
- package/plugins/flow/.claude-plugin/plugin.json +5 -0
- package/plugins/flow/.claude-plugin/settings.template.json +86 -0
- package/plugins/flow/agents/angular-component-scaffolder.md +176 -0
- package/plugins/flow/agents/angular-directive-builder.md +154 -0
- package/plugins/flow/agents/angular-guard-builder.md +244 -0
- package/plugins/flow/agents/angular-jest-test-writer.md +475 -0
- package/plugins/flow/agents/angular-pipe-builder.md +170 -0
- package/plugins/flow/agents/angular-resolver-builder.md +287 -0
- package/plugins/flow/agents/angular-service-builder.md +162 -0
- package/plugins/flow/agents/angular-signal-state-builder.md +340 -0
- package/plugins/flow/agents/angular-test-diagnostician.md +279 -0
- package/plugins/flow/agents/angular-testbed-configurator.md +315 -0
- package/plugins/flow/agents/arch-scaffolder.md +278 -0
- package/plugins/flow/agents/e2e-data-testid-injector.md +195 -0
- package/plugins/flow/agents/e2e-project-scaffolder.md +194 -0
- package/plugins/flow/agents/e2e-test-writer.md +357 -0
- package/plugins/flow/agents/shared-agent-evolver.md +294 -0
- package/plugins/flow/agents/shared-build-verifier.md +160 -0
- package/plugins/flow/agents/shared-config-updater.md +310 -0
- package/plugins/flow/agents/shared-coverage-enforcer.md +184 -0
- package/plugins/flow/agents/shared-error-handler.md +217 -0
- package/plugins/flow/agents/shared-file-creator.md +344 -0
- package/plugins/flow/agents/shared-impl-orchestrator.md +312 -0
- package/plugins/flow/agents/shared-impl-reporter.md +368 -0
- package/plugins/flow/agents/shared-impl-teammate.md +201 -0
- package/plugins/flow/agents/shared-linear-subtask-iterator.md +337 -0
- package/plugins/flow/agents/shared-logic-implementer.md +244 -0
- package/plugins/flow/agents/shared-maia-api.md +26 -0
- package/plugins/flow/agents/shared-parallelization-analyzer.md +343 -0
- package/plugins/flow/agents/shared-performance-validator.md +168 -0
- package/plugins/flow/agents/shared-plan-perspective.md +271 -0
- package/plugins/flow/agents/shared-project-standardizer.md +205 -0
- package/plugins/flow/agents/shared-report-synthesizer.md +188 -0
- package/plugins/flow/agents/shared-review-teammate.md +189 -0
- package/plugins/flow/agents/shared-security-scanner.md +186 -0
- package/plugins/flow/agents/shared-style-enforcer.md +230 -0
- package/plugins/flow/agents/shared-subtask-dependency-analyzer.md +189 -0
- package/plugins/flow/agents/shared-tdd-developer.md +350 -0
- package/plugins/flow/agents/shared-team-coordinator.md +192 -0
- package/plugins/flow/agents/shared-test-fixer.md +186 -0
- package/plugins/flow/agents/shared-test-runner.md +191 -0
- package/plugins/flow/agents/shared-ui-classifier.md +263 -0
- package/plugins/flow/agents/shared-verification-orchestrator.md +194 -0
- package/plugins/flow/agents/shared-verification-runner.md +140 -0
- package/plugins/flow/agents/ui-a11y-validator.md +305 -0
- package/plugins/flow/agents/ui-screenshot-reporter.md +329 -0
- package/plugins/flow/agents/ui-web-designer.md +214 -0
- package/plugins/flow/scripts/compute-session-tokens.sh +39 -0
- package/plugins/flow/skills/a11y-audit/SKILL.md +214 -0
- package/plugins/flow/skills/angular-patterns/SKILL.md +191 -0
- package/plugins/flow/skills/browser-capture/SKILL.md +238 -0
- package/plugins/flow/skills/commit/SKILL.md +259 -0
- package/plugins/flow/skills/debug-helper/SKILL.md +375 -0
- package/plugins/flow/skills/impl/SKILL.md +992 -0
- package/plugins/flow/skills/karpathy-guidelines/SKILL.md +72 -0
- package/plugins/flow/skills/linear-suggestion/SKILL.md +132 -0
- package/plugins/flow/skills/maia-files-delete/SKILL.md +59 -0
- package/plugins/flow/skills/maia-files-upload/SKILL.md +57 -0
- package/plugins/flow/skills/nx-conventions/SKILL.md +326 -0
- package/plugins/flow/skills/plan/SKILL.md +1033 -0
- package/plugins/flow/skills/push/SKILL.md +759 -0
- package/plugins/flow/skills/review/SKILL.md +443 -0
- package/plugins/flow/skills/test-e2e/SKILL.md +164 -0
- package/plugins/flow/skills/test-unit/SKILL.md +456 -0
- package/plugins/flow-external/.claude-plugin/README.md +146 -0
- package/plugins/flow-external/.claude-plugin/merge-permissions.js +94 -0
- package/plugins/flow-external/.claude-plugin/plugin.json +5 -0
- package/plugins/flow-external/.claude-plugin/settings.template.json +78 -0
- package/plugins/flow-external/agents/angular-component-scaffolder.md +271 -0
- package/plugins/flow-external/agents/angular-directive-builder.md +134 -0
- package/plugins/flow-external/agents/angular-guard-builder.md +73 -0
- package/plugins/flow-external/agents/angular-pipe-builder.md +90 -0
- package/plugins/flow-external/agents/angular-resolver-builder.md +79 -0
- package/plugins/flow-external/agents/angular-service-builder.md +168 -0
- package/plugins/flow-external/agents/angular-state-builder.md +263 -0
- package/plugins/flow-external/agents/shared-build-verifier.md +67 -0
- package/plugins/flow-external/agents/shared-impl-orchestrator.md +90 -0
- package/plugins/flow-external/agents/shared-impl-reporter.md +135 -0
- package/plugins/flow-external/agents/shared-linear-subtask-iterator.md +70 -0
- package/plugins/flow-external/agents/shared-ui-classifier.md +38 -0
- package/plugins/flow-external/agents/ui-web-designer.md +203 -0
- package/plugins/flow-external/scripts/compute-session-tokens.sh +39 -0
- package/plugins/flow-external/skills/a11y-audit/SKILL.md +97 -0
- package/plugins/flow-external/skills/angular-cli-conventions/SKILL.md +268 -0
- package/plugins/flow-external/skills/angular-patterns/SKILL.md +182 -0
- package/plugins/flow-external/skills/browser-capture/SKILL.md +74 -0
- package/plugins/flow-external/skills/commit/SKILL.md +114 -0
- package/plugins/flow-external/skills/debug-helper/SKILL.md +135 -0
- package/plugins/flow-external/skills/impl/SKILL.md +218 -0
- package/plugins/flow-external/skills/karpathy-guidelines/SKILL.md +72 -0
- package/plugins/flow-external/skills/linear-suggestion/SKILL.md +62 -0
- package/plugins/flow-external/skills/maia-files-delete/SKILL.md +34 -0
- package/plugins/flow-external/skills/maia-files-upload/SKILL.md +41 -0
- package/plugins/flow-external/skills/plan/SKILL.md +334 -0
- package/plugins/flow-external/skills/push/SKILL.md +232 -0
- package/plugins/flow-legacy/.claude-plugin/README.md +143 -0
- package/plugins/flow-legacy/.claude-plugin/merge-permissions.js +94 -0
- package/plugins/flow-legacy/.claude-plugin/plugin.json +5 -0
- package/plugins/flow-legacy/.claude-plugin/settings.template.json +79 -0
- package/plugins/flow-legacy/agents/angular-component-scaffolder.md +327 -0
- package/plugins/flow-legacy/agents/angular-directive-builder.md +253 -0
- package/plugins/flow-legacy/agents/angular-guard-builder.md +326 -0
- package/plugins/flow-legacy/agents/angular-pipe-builder.md +238 -0
- package/plugins/flow-legacy/agents/angular-resolver-builder.md +339 -0
- package/plugins/flow-legacy/agents/angular-service-builder.md +271 -0
- package/plugins/flow-legacy/agents/angular-state-builder.md +480 -0
- package/plugins/flow-legacy/agents/shared-impl-orchestrator.md +174 -0
- package/plugins/flow-legacy/agents/shared-impl-reporter.md +232 -0
- package/plugins/flow-legacy/agents/shared-linear-subtask-iterator.md +198 -0
- package/plugins/flow-legacy/agents/shared-tdd-developer.md +307 -0
- package/plugins/flow-legacy/agents/shared-test-runner.md +133 -0
- package/plugins/flow-legacy/agents/shared-ui-classifier.md +145 -0
- package/plugins/flow-legacy/scripts/compute-session-tokens.sh +39 -0
- package/plugins/flow-legacy/skills/a11y-audit/SKILL.md +214 -0
- package/plugins/flow-legacy/skills/angular-patterns/SKILL.md +346 -0
- package/plugins/flow-legacy/skills/browser-capture/SKILL.md +238 -0
- package/plugins/flow-legacy/skills/commit/SKILL.md +215 -0
- package/plugins/flow-legacy/skills/debug-helper/SKILL.md +395 -0
- package/plugins/flow-legacy/skills/impl/SKILL.md +710 -0
- package/plugins/flow-legacy/skills/karpathy-guidelines/SKILL.md +72 -0
- package/plugins/flow-legacy/skills/linear-suggestion/SKILL.md +132 -0
- package/plugins/flow-legacy/skills/maia-files-delete/SKILL.md +59 -0
- package/plugins/flow-legacy/skills/maia-files-upload/SKILL.md +57 -0
- package/plugins/flow-legacy/skills/nx-conventions/SKILL.md +368 -0
- package/plugins/flow-legacy/skills/plan/SKILL.md +742 -0
- package/plugins/flow-legacy/skills/push/SKILL.md +645 -0
- package/plugins/flow-legacy/skills/test-unit/SKILL.md +500 -0
- package/plugins/smart-pro/.claude-plugin/README.md +115 -0
- package/plugins/smart-pro/.claude-plugin/merge-permissions.js +129 -0
- package/plugins/smart-pro/.claude-plugin/plugin.json +5 -0
- package/plugins/smart-pro/.claude-plugin/settings.template.json +94 -0
- package/plugins/smart-pro/agents/angular-components/AGENT.md +214 -0
- package/plugins/smart-pro/hooks/CONFIG.md +198 -0
- package/plugins/smart-pro/hooks/README.md +139 -0
- package/plugins/smart-pro/hooks/audit_logger.py +107 -0
- package/plugins/smart-pro/hooks/auto_format.sh +11 -0
- package/plugins/smart-pro/hooks/hooks.json +79 -0
- package/plugins/smart-pro/hooks/safety_validator.py +129 -0
- package/plugins/smart-pro/hooks/sensitive_file_blocker.py +58 -0
- package/plugins/smart-pro/hooks/skill_validator.py +220 -0
- package/plugins/smart-pro/skills/angular-components-action-panel/SKILL.md +159 -0
- package/plugins/smart-pro/skills/angular-components-avatar/SKILL.md +142 -0
- package/plugins/smart-pro/skills/angular-components-badge/SKILL.md +110 -0
- package/plugins/smart-pro/skills/angular-components-breadcrumbs/SKILL.md +91 -0
- package/plugins/smart-pro/skills/angular-components-button/SKILL.md +146 -0
- package/plugins/smart-pro/skills/angular-components-button-group/SKILL.md +121 -0
- package/plugins/smart-pro/skills/angular-components-calendar/SKILL.md +78 -0
- package/plugins/smart-pro/skills/angular-components-card/SKILL.md +110 -0
- package/plugins/smart-pro/skills/angular-components-card-heading/SKILL.md +105 -0
- package/plugins/smart-pro/skills/angular-components-command-palette/SKILL.md +168 -0
- package/plugins/smart-pro/skills/angular-components-container/SKILL.md +93 -0
- package/plugins/smart-pro/skills/angular-components-description-list/SKILL.md +102 -0
- package/plugins/smart-pro/skills/angular-components-details/SKILL.md +70 -0
- package/plugins/smart-pro/skills/angular-components-divider/SKILL.md +110 -0
- package/plugins/smart-pro/skills/angular-components-drawer/SKILL.md +136 -0
- package/plugins/smart-pro/skills/angular-components-dropdown/SKILL.md +131 -0
- package/plugins/smart-pro/skills/angular-components-empty-state/SKILL.md +103 -0
- package/plugins/smart-pro/skills/angular-components-feed/SKILL.md +110 -0
- package/plugins/smart-pro/skills/angular-components-form/SKILL.md +77 -0
- package/plugins/smart-pro/skills/angular-components-grid-list/SKILL.md +91 -0
- package/plugins/smart-pro/skills/angular-components-input/SKILL.md +118 -0
- package/plugins/smart-pro/skills/angular-components-list/SKILL.md +75 -0
- package/plugins/smart-pro/skills/angular-components-list-container/SKILL.md +106 -0
- package/plugins/smart-pro/skills/angular-components-media-object/SKILL.md +133 -0
- package/plugins/smart-pro/skills/angular-components-modal/SKILL.md +159 -0
- package/plugins/smart-pro/skills/angular-components-multi-column-layout/SKILL.md +84 -0
- package/plugins/smart-pro/skills/angular-components-navbar/SKILL.md +93 -0
- package/plugins/smart-pro/skills/angular-components-notification/SKILL.md +147 -0
- package/plugins/smart-pro/skills/angular-components-page/SKILL.md +162 -0
- package/plugins/smart-pro/skills/angular-components-page-heading/SKILL.md +96 -0
- package/plugins/smart-pro/skills/angular-components-paging/SKILL.md +86 -0
- package/plugins/smart-pro/skills/angular-components-progress-bars/SKILL.md +94 -0
- package/plugins/smart-pro/skills/angular-components-searchbar/SKILL.md +113 -0
- package/plugins/smart-pro/skills/angular-components-section-heading/SKILL.md +156 -0
- package/plugins/smart-pro/skills/angular-components-select-menu/SKILL.md +101 -0
- package/plugins/smart-pro/skills/angular-components-sidebar-layout/SKILL.md +121 -0
- package/plugins/smart-pro/skills/angular-components-sidebar-navigation/SKILL.md +80 -0
- package/plugins/smart-pro/skills/angular-components-sign-in-form/SKILL.md +91 -0
- package/plugins/smart-pro/skills/angular-components-stacked-layout/SKILL.md +114 -0
- package/plugins/smart-pro/skills/angular-components-stacked-list/SKILL.md +93 -0
- package/plugins/smart-pro/skills/angular-components-stats/SKILL.md +87 -0
- package/plugins/smart-pro/skills/angular-components-table/SKILL.md +98 -0
- package/plugins/smart-pro/skills/angular-components-tabs/SKILL.md +99 -0
- package/plugins/smart-pro/skills/angular-components-textarea/SKILL.md +111 -0
- package/plugins/smart-pro/skills/angular-components-toggle/SKILL.md +109 -0
- package/plugins/smart-pro/skills/angular-components-vertical-navigation/SKILL.md +139 -0
- package/plugins/smart-pro/skills/audit-log/SKILL.md +82 -0
- package/plugins/smart-pro/skills/format-code/SKILL.md +46 -0
- package/plugins/smart-pro/skills/project-conventions/SKILL.md +90 -0
- package/plugins/smart-pro/skills/safety-check/SKILL.md +0 -0
- package/src/index.d.ts +6 -0
- package/src/index.js +7 -0
- 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
|
+
 
|
|
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,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
|
+
```
|