@thiennc/ios-skills 1.1.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/LICENSE ADDED
@@ -0,0 +1,133 @@
1
+ Required Notice: Copyright (c) 2026 Thien Ngo (https://github.com/thiennc-tesoglobal)
2
+ Required Notice: Copyright (c) 2025 dpearson2699 (https://github.com/dpearson2699)
3
+ Required Notice: Copyright 2025 Existential Birds, LLC (https://github.com/existential-birds/beagle) — applies to adapted swift-code-review material.
4
+
5
+ # PolyForm Perimeter License 1.0.0
6
+
7
+ <https://polyformproject.org/licenses/perimeter/1.0.0>
8
+
9
+ ## Acceptance
10
+
11
+ In order to get any license under these terms, you must agree
12
+ to them as both strict obligations and conditions to all
13
+ your licenses.
14
+
15
+ ## Copyright License
16
+
17
+ The licensor grants you a copyright license for the
18
+ software to do everything you might do with the software
19
+ that would otherwise infringe the licensor's copyright
20
+ in it for any permitted purpose. However, you may
21
+ only distribute the software according to [Distribution
22
+ License](#distribution-license) and make changes or new works
23
+ based on the software according to [Changes and New Works
24
+ License](#changes-and-new-works-license).
25
+
26
+ ## Distribution License
27
+
28
+ The licensor grants you an additional copyright license
29
+ to distribute copies of the software. Your license
30
+ to distribute covers distributing the software with
31
+ changes and new works permitted by [Changes and New Works
32
+ License](#changes-and-new-works-license).
33
+
34
+ ## Notices
35
+
36
+ You must ensure that anyone who gets a copy of any part of
37
+ the software from you also gets a copy of these terms or the
38
+ URL for them above, as well as copies of any plain-text lines
39
+ beginning with `Required Notice:` that the licensor provided
40
+ with the software. For example:
41
+
42
+ > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
43
+
44
+ ## Changes and New Works License
45
+
46
+ The licensor grants you an additional copyright license to
47
+ make changes and new works based on the software for any
48
+ permitted purpose.
49
+
50
+ ## Patent License
51
+
52
+ The licensor grants you a patent license for the software that
53
+ covers patent claims the licensor can license, or becomes able
54
+ to license, that you would infringe by using the software.
55
+
56
+ ## Noncompete
57
+
58
+ Any purpose is a permitted purpose, except for providing to
59
+ others any product that competes with the software.
60
+
61
+ ## Competition
62
+
63
+ If you use this software to market a product as a substitute
64
+ for the functionality or value of the software, it competes
65
+ with the software. A product may compete regardless how it is
66
+ designed or deployed. For example, a product may compete even
67
+ if it provides its functionality via any kind of interface
68
+ (including services, libraries or plug-ins), even if it is
69
+ ported to a different platforms or programming languages,
70
+ and even if it is provided free of charge.
71
+
72
+ ## Fair Use
73
+
74
+ You may have "fair use" rights for the software under the
75
+ law. These terms do not limit them.
76
+
77
+ ## No Other Rights
78
+
79
+ These terms do not allow you to sublicense or transfer any of
80
+ your licenses to anyone else, or prevent the licensor from
81
+ granting licenses to anyone else. These terms do not imply
82
+ any other licenses.
83
+
84
+ ## Patent Defense
85
+
86
+ If you make any written claim that the software infringes or
87
+ contributes to infringement of any patent, your patent license
88
+ for the software granted under these terms ends immediately. If
89
+ your company makes such a claim, your patent license ends
90
+ immediately for work on behalf of your company.
91
+
92
+ ## Violations
93
+
94
+ The first time you are notified in writing that you have
95
+ violated any of these terms, or done anything with the software
96
+ not covered by your licenses, your licenses can nonetheless
97
+ continue if you come into full compliance with these terms,
98
+ and take practical steps to correct past violations, within
99
+ 32 days of receiving notice. Otherwise, all your licenses
100
+ end immediately.
101
+
102
+ ## No Liability
103
+
104
+ ***As far as the law allows, the software comes as is, without
105
+ any warranty or condition, and the licensor will not be liable
106
+ to you for any damages arising out of these terms or the use
107
+ or nature of the software, under any kind of legal claim.***
108
+
109
+ ## Definitions
110
+
111
+ The **licensor** is the individual or entity offering these
112
+ terms, and the **software** is the software the licensor makes
113
+ available under these terms.
114
+
115
+ A **product** can be a good or service, or a combination
116
+ of them.
117
+
118
+ **You** refers to the individual or entity agreeing to these
119
+ terms.
120
+
121
+ **Your company** is any legal entity, sole proprietorship,
122
+ or other kind of organization that you work for, plus all
123
+ organizations that have control over, are under the control of,
124
+ or are under common control with that organization. **Control**
125
+ means ownership of substantially all the assets of an entity,
126
+ or the power to direct its management and policies by vote,
127
+ contract, or otherwise. Control can be direct or indirect.
128
+
129
+ **Your licenses** are all the licenses granted to you for the
130
+ software under these terms.
131
+
132
+ **Use** means anything you do with the software requiring one
133
+ of your licenses.
package/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # Swift iOS Skills Community
2
+
3
+ [![Agent Skills](https://img.shields.io/badge/Agent%20Skills-89-2ea44f)](skills/)
4
+ [![Swift](https://img.shields.io/badge/Swift-6.3-F05138?logo=swift&logoColor=white)](https://swift.org)
5
+ [![Apple platforms](https://img.shields.io/badge/Apple%20Platforms-iOS%20%7C%20iPadOS%20%7C%20macOS-black?logo=apple)](https://developer.apple.com)
6
+ [![Validation](https://github.com/thiennc-tesoglobal/ios-skills/actions/workflows/validate-repository.yml/badge.svg)](https://github.com/thiennc-tesoglobal/ios-skills/actions/workflows/validate-repository.yml)
7
+ [![License](https://img.shields.io/badge/License-PolyForm%20Perimeter-blue)](LICENSE)
8
+
9
+ A practical collection of **89 Agent Skills** for building complete Swift and Apple-platform applications with AI coding agents.
10
+
11
+ The collection helps an agent choose the right specialist guidance, organize maintainable source code, implement features, and verify the result with builds, tests, and Simulator evidence. It is a knowledge and delivery layer—not an app template or framework dependency.
12
+
13
+ > **Tiếng Việt:** Bộ skill giúp AI coding agent phát triển ứng dụng Swift và SwiftUI theo quy trình thực tế, từ tổ chức source code đến build, test và kiểm tra trên Simulator.
14
+
15
+ ## Why this collection
16
+
17
+ - **Complete delivery:** architecture, implementation, testing, performance, accessibility, security, and App Store readiness.
18
+ - **Focused context:** load one workflow skill and only the specialists required by the task.
19
+ - **Modern Apple development:** current Swift, SwiftUI, concurrency, privacy, SDK, and deployment-target guidance.
20
+ - **Evidence-based results:** prefer real build, test, runtime, and Simulator verification over assumptions.
21
+
22
+ For an entire app or substantial multi-file feature, start with [`ios-app-workflow`](skills/ios-app-workflow/). For a narrow task, select the matching specialist directly.
23
+
24
+ ```text
25
+ Product request → ios-app-workflow → relevant specialists → implementation → verification
26
+ ```
27
+
28
+ ## Install
29
+
30
+ ### Codex and Agent Skills-compatible tools
31
+
32
+ Choose skills interactively:
33
+
34
+ ```sh
35
+ npx @thiennc/ios-skills
36
+ ```
37
+
38
+ Install the end-to-end workflow:
39
+
40
+ ```sh
41
+ npx @thiennc/ios-skills --skill ios-app-workflow
42
+ ```
43
+
44
+ Install the complete collection only when broad framework coverage is required:
45
+
46
+ ```sh
47
+ npx @thiennc/ios-skills --all
48
+ ```
49
+
50
+ The direct GitHub installer remains available as a fallback:
51
+
52
+ ```sh
53
+ npx skills add thiennc-tesoglobal/ios-skills
54
+ ```
55
+
56
+ Smaller installations provide agents with a cheaper and more precise discovery surface. The repository follows the open [Agent Skills specification](https://agentskills.io).
57
+
58
+ ### Claude Code
59
+
60
+ Add the marketplace and install a bundle:
61
+
62
+ ```sh
63
+ /plugin marketplace add thiennc-tesoglobal/ios-skills
64
+ /plugin install all-ios-skills@ios-skills
65
+ ```
66
+
67
+ Focused bundles are also available:
68
+
69
+ ```sh
70
+ /plugin install swiftui-skills@ios-skills
71
+ /plugin install swift-core-skills@ios-skills
72
+ /plugin install ios-engineering-skills@ios-skills
73
+ ```
74
+
75
+ ### Manual installation
76
+
77
+ Clone the repository and copy the required folders from [`skills/`](skills/) into the skills directory supported by your agent. Keep each folder intact so its instructions, references, scripts, and evaluations remain together.
78
+
79
+ ## Use
80
+
81
+ Ask the agent to use a skill explicitly when deterministic routing matters:
82
+
83
+ ```text
84
+ Use $ios-app-workflow to build a polished SwiftUI todo app with SwiftData,
85
+ accessible interactions, tests, and verified Simulator behavior.
86
+ ```
87
+
88
+ Examples of focused routing:
89
+
90
+ - `swift-concurrency` — actor isolation, `Sendable`, and async code
91
+ - `swiftdata` — models, queries, relationships, and migrations
92
+ - `swiftui-animation` — transitions, springs, and Reduce Motion behavior
93
+ - `swiftui-responsive-layout` — clipping, overlap, safe areas, keyboard, and cross-size adaptation
94
+ - `swift-code-review` — evidence-backed Swift/SwiftUI diff review with concurrency, ownership, errors, and state checks
95
+ - `ios-accessibility` — VoiceOver, Dynamic Type, and accessible interactions
96
+ - `storekit` — purchases and subscriptions
97
+ - `ios-simulator` — build, install, launch, and runtime verification
98
+
99
+ Installing every skill does not mean every skill should be loaded for every request.
100
+
101
+ ## Bundles
102
+
103
+ | Bundle | Skills | Coverage |
104
+ |---|---:|---|
105
+ | `all-ios-skills` | 89 | Complete collection |
106
+ | `swiftui-skills` | 11 | SwiftUI UI, responsive layout, navigation, animation, performance, and interop |
107
+ | `swift-core-skills` | 10 | Swift language, architecture, concurrency, data, and testing |
108
+ | `ios-app-framework-skills` | 15 | Widgets, StoreKit, App Intents, maps, media, PDFs, and CarPlay |
109
+ | `ios-data-framework-skills` | 8 | CloudKit, HealthKit, EventKit, Contacts, Wallet, and weather |
110
+ | `ios-ai-ml-skills` | 5 | Foundation Models, Core ML, Vision, language, and speech |
111
+ | `ios-engineering-skills` | 18 | Delivery, code review, networking, accessibility, security, diagnostics, and App Store readiness |
112
+ | `ios-hardware-skills` | 8 | Bluetooth, NFC, motion, PencilKit, RealityKit, and accessories |
113
+ | `ios-platform-skills` | 10 | HomeKit, SharePlay, CallKit, and specialized integrations |
114
+ | `ios-gaming-skills` | 4 | GameKit, SpriteKit, SceneKit, and TabletopKit |
115
+ | `apple-kit-skills` | 39 | Framework-focused Apple Kit subset |
116
+
117
+ Browse the full catalog in [`skills/`](skills/).
118
+
119
+ ## Repository layout
120
+
121
+ ```text
122
+ ios-skills/
123
+ ├── skills/ # Skill instructions, references, scripts, and local evals
124
+ ├── evals/ # Published behavior scenarios and assertions
125
+ ├── tests/ # Repository and diagnostic-helper tests
126
+ ├── .claude-plugin/ # Claude Code marketplace bundles
127
+ ├── .tessl-plugin/ # Tessl package metadata
128
+ └── tessl.json
129
+ ```
130
+
131
+ ## Quality
132
+
133
+ Pull requests validate skill metadata, references, evaluation coverage, plugin bundles, repository tests, and clean Agent Skills discovery.
134
+
135
+ ```sh
136
+ python3 .github/scripts/validate_repository.py
137
+ python3 -m unittest discover -s tests -v
138
+ npm ci
139
+ npm test
140
+ npm run pack:check
141
+ npx --yes skills@1.5.23 add . --list
142
+ ```
143
+
144
+ The complete collection currently includes **89 skills**, **284 local evaluation cases**, and **267 published evaluation scenarios**. See [`CHANGELOG.md`](CHANGELOG.md) for notable changes.
145
+
146
+ ## Contributing
147
+
148
+ Issues and pull requests are welcome. Read [`CONTRIBUTING.md`](CONTRIBUTING.md) for skill structure, evaluation requirements, local checks, and the pull-request checklist.
149
+
150
+ Use [Issues](https://github.com/thiennc-tesoglobal/ios-skills/issues) for bugs and focused proposals, or [Discussions](https://github.com/thiennc-tesoglobal/ios-skills/discussions) for broader ideas.
151
+
152
+ ## License
153
+
154
+ This source-available project is distributed under the [PolyForm Perimeter License 1.0.0](LICENSE), which includes a noncompete restriction. Review its terms before redistribution or offering a competing product.
155
+
156
+ The adapted [`swift-code-review`](skills/swift-code-review/) skill is distributed
157
+ under Apache-2.0 with its upstream attribution and license files; the repository
158
+ license applies to the remaining collection.
159
+
160
+ Apple frameworks, APIs, documentation, session content, and trademarks belong to Apple Inc. This independent project is not affiliated with, endorsed by, or sponsored by Apple.
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { run } from "../lib/cli.mjs";
4
+
5
+ process.exitCode = run(process.argv.slice(2));
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/ios-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 `Swift iOS Skills Community ${packageVersion}
21
+
22
+ Usage:
23
+ npx @thiennc/ios-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,45 @@
1
+ {
2
+ "name": "@thiennc/ios-skills",
3
+ "version": "1.1.0",
4
+ "description": "Install the Swift iOS Skills Community collection with one command.",
5
+ "type": "module",
6
+ "bin": {
7
+ "ios-skills": "bin/ios-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/ios-skills.git"
31
+ },
32
+ "homepage": "https://github.com/thiennc-tesoglobal/ios-skills#readme",
33
+ "bugs": {
34
+ "url": "https://github.com/thiennc-tesoglobal/ios-skills/issues"
35
+ },
36
+ "keywords": [
37
+ "agent-skills",
38
+ "apple",
39
+ "codex",
40
+ "ios",
41
+ "swift",
42
+ "swiftui"
43
+ ],
44
+ "license": "SEE LICENSE IN LICENSE"
45
+ }