@thiennc/flutter-skills 0.1.1
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/LICENSE +28 -0
- package/README.md +81 -0
- package/bin/flutter-skills.mjs +5 -0
- package/lib/cli.mjs +69 -0
- package/package.json +43 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
BSD 3-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026, Flutter Skills contributors
|
|
4
|
+
|
|
5
|
+
Redistribution and use in source and binary forms, with or without
|
|
6
|
+
modification, are permitted provided that the following conditions are met:
|
|
7
|
+
|
|
8
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
9
|
+
list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
12
|
+
this list of conditions and the following disclaimer in the documentation
|
|
13
|
+
and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
3. Neither the name of the copyright holder nor the names of its
|
|
16
|
+
contributors may be used to endorse or promote products derived from
|
|
17
|
+
this software without specific prior written permission.
|
|
18
|
+
|
|
19
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
20
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
21
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
22
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
23
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
24
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
25
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
26
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
27
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
28
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
package/README.md
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Flutter Skills
|
|
2
|
+
|
|
3
|
+
[](skills/)
|
|
4
|
+
[](https://github.com/thiennc-tesoglobal/flutter-skills/actions/workflows/validate-repository.yml)
|
|
5
|
+
[](LICENSE)
|
|
6
|
+
|
|
7
|
+
25 package-neutral Agent Skills for building, reviewing, testing, and releasing Flutter apps without forcing a state-management package or folder structure.
|
|
8
|
+
|
|
9
|
+
> Bộ skill giúp AI coding agent đọc dự án Flutter, chọn đúng chuyên môn, triển khai và xác minh kết quả theo conventions sẵn có.
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
Choose skills interactively:
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
npx @thiennc/flutter-skills
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Start with the end-to-end workflow for a complete app or feature:
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
npx @thiennc/flutter-skills \
|
|
23
|
+
--agent codex \
|
|
24
|
+
--skill flutter-app-workflow
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Install one specialist when the task is focused:
|
|
28
|
+
|
|
29
|
+
```sh
|
|
30
|
+
npx @thiennc/flutter-skills \
|
|
31
|
+
--agent codex \
|
|
32
|
+
--skill flutter-ui-design
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Project installation is the default. Add `--global` to use the selected skills across projects.
|
|
36
|
+
|
|
37
|
+
The direct GitHub installer remains available: `npx skills add thiennc-tesoglobal/flutter-skills`.
|
|
38
|
+
|
|
39
|
+
> In a regular terminal, the installer asks which skills and agents to use. Inside Codex, it may detect Codex and install non-interactively; pass `--skill` explicitly when you do not want all 25 skills.
|
|
40
|
+
|
|
41
|
+
### Claude Code bundles
|
|
42
|
+
|
|
43
|
+
```sh
|
|
44
|
+
/plugin marketplace add thiennc-tesoglobal/flutter-skills
|
|
45
|
+
/plugin install flutter-core-skills@flutter-skills
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Available bundles: `all-flutter-skills`, `flutter-core-skills`, `flutter-ui-skills`, and `flutter-engineering-skills`.
|
|
49
|
+
|
|
50
|
+
## Catalog
|
|
51
|
+
|
|
52
|
+
| Area | Skills |
|
|
53
|
+
|---|---|
|
|
54
|
+
| Workflow | `flutter-app-workflow`, `flutter-build-release`, `flutter-ci-cd`, `flutter-device-testing` |
|
|
55
|
+
| Dart | `dart-language`, `dart-concurrency` |
|
|
56
|
+
| Architecture | `flutter-architecture`, `flutter-state-management` |
|
|
57
|
+
| UI | `flutter-ui-design`, `flutter-visual-effects`, `flutter-ui-patterns`, `flutter-responsive-layout`, `flutter-animation`, `flutter-navigation` |
|
|
58
|
+
| Data | `flutter-networking`, `flutter-persistence` |
|
|
59
|
+
| Quality | `flutter-code-review`, `flutter-security`, `flutter-testing`, `flutter-performance`, `flutter-observability`, `flutter-accessibility`, `flutter-localization` |
|
|
60
|
+
| Platform | `flutter-platform-integration`, `flutter-notifications` |
|
|
61
|
+
|
|
62
|
+
## Use
|
|
63
|
+
|
|
64
|
+
Codex and compatible agents first see skill names and descriptions, then load only the relevant `SKILL.md` and references.
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
Use $flutter-app-workflow to build a polished offline-first todo app,
|
|
68
|
+
preserve the existing architecture, add tests, and verify it on Android.
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
For a focused task, name the specialist directly or let the agent route from the request. Installing every skill does not load every skill into the task context.
|
|
72
|
+
|
|
73
|
+
## Quality
|
|
74
|
+
|
|
75
|
+
The catalog contains **25 skills**, **77 behavior-focused evaluation cases**, and **23 cross-catalog routing cases**. Validation checks metadata, references, bundles, tests, and clean installation discovery.
|
|
76
|
+
|
|
77
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for validation and contribution instructions, and [docs/SOURCES.md](docs/SOURCES.md) for the source policy.
|
|
78
|
+
|
|
79
|
+
## License
|
|
80
|
+
|
|
81
|
+
BSD 3-Clause. Flutter and Dart are trademarks of Google LLC. This independent project is not affiliated with or endorsed by Google or the Flutter team.
|
package/lib/cli.mjs
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const packageMetadata = JSON.parse(
|
|
8
|
+
readFileSync(new URL("../package.json", import.meta.url), "utf8"),
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
export const packageVersion = packageMetadata.version;
|
|
12
|
+
export const repository = "thiennc-tesoglobal/flutter-skills";
|
|
13
|
+
export const skillsSource = `https://github.com/${repository}#v${packageVersion}`;
|
|
14
|
+
|
|
15
|
+
export function installerArguments(args) {
|
|
16
|
+
return ["add", skillsSource, ...args];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function helpText() {
|
|
20
|
+
return `Flutter Skills ${packageVersion}
|
|
21
|
+
|
|
22
|
+
Usage:
|
|
23
|
+
npx @thiennc/flutter-skills [options]
|
|
24
|
+
|
|
25
|
+
Options:
|
|
26
|
+
-s, --skill <skills> Install selected skills
|
|
27
|
+
-a, --agent <agents> Install for selected agents
|
|
28
|
+
-g, --global Install at user level
|
|
29
|
+
-l, --list List available skills
|
|
30
|
+
-y, --yes Skip confirmation prompts
|
|
31
|
+
--all Install every skill for every agent
|
|
32
|
+
-h, --help Show this help
|
|
33
|
+
-v, --version Show the wrapper version
|
|
34
|
+
|
|
35
|
+
All installation options are forwarded to skills@${packageMetadata.dependencies.skills}.
|
|
36
|
+
Source: ${skillsSource}`;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function resolveSkillsCli() {
|
|
40
|
+
const packagePath = require.resolve("skills/package.json");
|
|
41
|
+
return join(dirname(packagePath), "bin", "cli.mjs");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function run(args, options = {}) {
|
|
45
|
+
const stdout = options.stdout ?? process.stdout;
|
|
46
|
+
const stderr = options.stderr ?? process.stderr;
|
|
47
|
+
|
|
48
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
49
|
+
stdout.write(`${helpText()}\n`);
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
if (args.includes("--version") || args.includes("-v")) {
|
|
53
|
+
stdout.write(`${packageVersion}\n`);
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const spawn = options.spawn ?? spawnSync;
|
|
58
|
+
const cliPath = options.cliPath ?? resolveSkillsCli();
|
|
59
|
+
const nodePath = options.nodePath ?? process.execPath;
|
|
60
|
+
const result = spawn(nodePath, [cliPath, ...installerArguments(args)], {
|
|
61
|
+
stdio: "inherit",
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
if (result.error) {
|
|
65
|
+
stderr.write(`Unable to start the skills installer: ${result.error.message}\n`);
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
return Number.isInteger(result.status) ? result.status : 1;
|
|
69
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@thiennc/flutter-skills",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Install the Flutter Skills collection with one command.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"flutter-skills": "bin/flutter-skills.mjs"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin",
|
|
11
|
+
"lib",
|
|
12
|
+
"LICENSE",
|
|
13
|
+
"README.md"
|
|
14
|
+
],
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "node --test tests/test_npm_cli.mjs",
|
|
17
|
+
"pack:check": "npm pack --dry-run"
|
|
18
|
+
},
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=22.20.0"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"skills": "1.5.23"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "git+https://github.com/thiennc-tesoglobal/flutter-skills.git"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/thiennc-tesoglobal/flutter-skills#readme",
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/thiennc-tesoglobal/flutter-skills/issues"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"agent-skills",
|
|
38
|
+
"codex",
|
|
39
|
+
"dart",
|
|
40
|
+
"flutter"
|
|
41
|
+
],
|
|
42
|
+
"license": "BSD-3-Clause"
|
|
43
|
+
}
|