@maccesar/titools 5.1.1 → 5.2.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.
Files changed (98) hide show
  1. package/CONTRIBUTING.md +69 -0
  2. package/README.md +112 -72
  3. package/agents/ti-pro.md +5 -1
  4. package/commands/ti-audit.md +5 -1
  5. package/docs/examples.md +91 -0
  6. package/docs/knowledge-index.md +57 -0
  7. package/lib/config.js +2 -0
  8. package/lib/downloader.js +1 -1
  9. package/package.json +4 -2
  10. package/skills/purgetss/references/multi-density-images.md +1 -1
  11. package/skills/ti-admob-unified/SKILL.md +58 -0
  12. package/skills/ti-admob-unified/agents/openai.yaml +4 -0
  13. package/skills/ti-admob-unified/assets/example/app.js +1207 -0
  14. package/skills/ti-admob-unified/assets/example/lib/ads.js +646 -0
  15. package/skills/ti-admob-unified/assets/example/library-usage.js +136 -0
  16. package/skills/ti-admob-unified/references/api-reference.md +615 -0
  17. package/skills/ti-admob-unified/references/banners.md +435 -0
  18. package/skills/ti-admob-unified/references/contributing.md +233 -0
  19. package/skills/ti-admob-unified/references/dependencies.md +91 -0
  20. package/skills/ti-admob-unified/references/fullscreen.md +238 -0
  21. package/skills/ti-admob-unified/references/game-monetization.md +148 -0
  22. package/skills/ti-admob-unified/references/getting-started.md +319 -0
  23. package/skills/ti-admob-unified/references/index.md +33 -0
  24. package/skills/ti-admob-unified/references/integration.md +87 -0
  25. package/skills/ti-admob-unified/references/library.md +220 -0
  26. package/skills/ti-admob-unified/references/mediation-parity.md +17 -0
  27. package/skills/ti-admob-unified/references/mediation.md +145 -0
  28. package/skills/ti-admob-unified/references/migration.md +259 -0
  29. package/skills/ti-admob-unified/references/module-changelog.md +84 -0
  30. package/skills/ti-admob-unified/references/module-license.txt +21 -0
  31. package/skills/ti-admob-unified/references/privacy.md +281 -0
  32. package/skills/ti-admob-unified/references/production.md +67 -0
  33. package/skills/ti-admob-unified/references/rewarded-interstitial.md +101 -0
  34. package/skills/ti-admob-unified/references/roadmap.md +143 -0
  35. package/skills/ti-admob-unified/references/source-notes.md +80 -0
  36. package/skills/ti-admob-unified/references/source-snapshot.json +644 -0
  37. package/skills/ti-admob-unified/references/third-party-notices.md +22 -0
  38. package/skills/ti-game/SKILL.md +31 -5
  39. package/skills/ti-game/references/api.md +36 -24
  40. package/skills/ti-game/references/debugging-performance.md +22 -7
  41. package/skills/ti-game/references/examples.md +113 -20
  42. package/skills/ti-game/references/input.md +101 -0
  43. package/skills/ti-game/references/patterns.md +56 -10
  44. package/skills/ti-game/references/physics.md +530 -0
  45. package/skills/ti-game/references/project-setup.md +131 -47
  46. package/skills/ti-game/references/recipes-action.md +149 -18
  47. package/skills/ti-game/references/recipes-adventure-effects.md +47 -4
  48. package/skills/ti-game/references/roadmap.md +11 -4
  49. package/skills/ti-game/references/source-notes.md +81 -0
  50. package/skills/ti-game/references/tilemaps.md +13 -4
  51. package/skills/ti-game-assets/SKILL.md +53 -0
  52. package/skills/ti-game-assets/agents/openai.yaml +4 -0
  53. package/skills/ti-game-assets/references/alpha.md +26 -0
  54. package/skills/ti-game-assets/references/art-direction.md +37 -0
  55. package/skills/ti-game-assets/references/integration.md +49 -0
  56. package/skills/ti-game-assets/references/manifest.example.json +429 -0
  57. package/skills/ti-game-assets/references/manifest.md +39 -0
  58. package/skills/ti-game-assets/references/offline-audio.md +33 -0
  59. package/skills/ti-game-assets/references/prompts.md +33 -0
  60. package/skills/ti-game-assets/references/repeating-textures.md +17 -0
  61. package/skills/ti-game-assets/references/responsible-ads.md +31 -0
  62. package/skills/ti-game-assets/references/sound-assets.md +42 -0
  63. package/skills/ti-game-assets/references/vector-sources.md +21 -0
  64. package/skills/ti-game-assets/scripts/alpha_tools.py +160 -0
  65. package/skills/ti-game-assets/scripts/requirements.txt +1 -0
  66. package/skills/ti-game-assets/scripts/validate_manifest.py +267 -0
  67. package/skills/ti-synthengine/SKILL.md +77 -67
  68. package/skills/ti-synthengine/assets/example/README.md +84 -0
  69. package/skills/ti-synthengine/assets/example/app.js +1178 -0
  70. package/skills/ti-synthengine/assets/example/lib/sequenceOwner.js +83 -0
  71. package/skills/ti-synthengine/assets/example/lib/sequenceScore.js +25 -0
  72. package/skills/ti-synthengine/references/advanced-examples.md +174 -0
  73. package/skills/ti-synthengine/references/android-sim80-correction-evidence.zip +0 -0
  74. package/skills/ti-synthengine/references/android-sim80-correction.json +162 -0
  75. package/skills/ti-synthengine/references/api.md +573 -153
  76. package/skills/ti-synthengine/references/audio-engine.md +272 -124
  77. package/skills/ti-synthengine/references/bypass-physical-recheck-evidence.zip +0 -0
  78. package/skills/ti-synthengine/references/examples.md +355 -106
  79. package/skills/ti-synthengine/references/frontier-android-evidence.zip +0 -0
  80. package/skills/ti-synthengine/references/frontier-ipad-evidence.zip +0 -0
  81. package/skills/ti-synthengine/references/frontier-physical-validation.json +1918 -0
  82. package/skills/ti-synthengine/references/guide.md +426 -75
  83. package/skills/ti-synthengine/references/performance-review-evidence.zip +0 -0
  84. package/skills/ti-synthengine/references/performance-review.json +1146 -0
  85. package/skills/ti-synthengine/references/physical-validation.json +1457 -0
  86. package/skills/ti-synthengine/references/recipes-interaction.md +549 -0
  87. package/skills/ti-synthengine/references/recipes.md +434 -420
  88. package/skills/ti-synthengine/references/recommendations.md +72 -85
  89. package/skills/ti-synthengine/references/sound-design.md +375 -155
  90. package/skills/ti-synthengine/references/source-notes.md +109 -0
  91. package/skills/ti-synthengine/references/source-snapshot.json +452 -0
  92. package/skills/ti-synthengine/references/stats-performance.json +2992 -0
  93. package/skills/ti-synthengine/references/stats-performance.md +82 -0
  94. package/skills/ti-synthengine/references/studio-validation.json +6202 -0
  95. package/skills/ti-synthengine/references/troubleshooting.md +123 -78
  96. package/skills/ti-synthengine/references/unified-bypass-performance.json +22425 -0
  97. package/skills/ti-synthengine/references/unified-validation.json +314 -0
  98. package/AGENTS-VERCEL-RESEARCH.md +0 -175
@@ -0,0 +1,69 @@
1
+ # Contributing to TiTools
2
+
3
+ TiTools distributes thirteen Titanium SDK skills, a research agent and slash
4
+ commands through an npm CLI and a Claude Code marketplace plugin. Product
5
+ content lives in `skills/`, `agents/` and `commands/`; CLI source lives in
6
+ `bin/` and `lib/`. Both channels use this source tree.
7
+
8
+ ## Development
9
+
10
+ Use Node.js 18 or newer. Install dependencies with `npm ci`.
11
+
12
+ Run the tests that cover a change first:
13
+
14
+ ```sh
15
+ node --test test/manifest.test.js
16
+ npm run lint
17
+ ```
18
+
19
+ Tests use Node's built-in runner. Asset-helper checks additionally require the
20
+ Python dependencies in `skills/ti-game-assets/scripts/requirements.txt`.
21
+ Scripts under `scripts/` maintain reference navigation, fences and snapshots;
22
+ they are repository tooling and are not installed as CLI commands.
23
+
24
+ ## Skill and command changes
25
+
26
+ - A skill's directory and frontmatter `name` must match, using kebab-case.
27
+ - Descriptions explain when to load the skill, stay within 1,024 characters and
28
+ begin with "Use when". Skill names have a 64-character limit.
29
+ - Register new public skills in `lib/config.js`, the `ti-pro` agent and the
30
+ `ti-audit` applicability list. Update the README and add at least two requests
31
+ to [the public examples](docs/examples.md).
32
+ - Keep entry points concise and put detail in linked references. Preserve
33
+ operational prerequisites, defaults, platform differences and cleanup.
34
+ - Verify factual guidance against official documentation and implementation;
35
+ identify source revisions and distinguish source/host checks from device
36
+ acceptance. Preserve declared source-mirror transformations and raw assets.
37
+ - Slash commands belong under `commands/`, where both channels can serve them.
38
+ - CLI modules use ESM imports with explicit `.js` extensions. Use asynchronous
39
+ child processes inside spinners so the UI remains responsive.
40
+
41
+ ## Public repository boundaries
42
+
43
+ Commit product source, public guides, tests, reusable maintenance scripts and
44
+ GitHub/marketplace configuration. Keep personal scratch notes, assistant/editor
45
+ workspace files, session state and unpublished audit conversations local.
46
+
47
+ The ignored `.agents/`, `.claude/`, `docs/project/` and root assistant instruction
48
+ files are private workspace material. `.claude-plugin/` and `.github/workflows/`
49
+ are public product infrastructure. A leading dot does not make a tracked path
50
+ private. The npm `files` allowlist is intentionally narrower than the repository.
51
+
52
+ The supported installation methods are npm and the Claude Code marketplace,
53
+ as described in the README. The obsolete standalone shell installer is retired.
54
+
55
+ ## Release checklist
56
+
57
+ The `.github/workflows/publish.yml` workflow publishes with npm trusted
58
+ publishing (OIDC). Do not publish manually from a maintainer machine.
59
+
60
+ 1. Run `npm test` and the required lint checks for a release.
61
+ 2. Add the release entry to `CHANGELOG.md`.
62
+ 3. Bump `package.json`, its lockfile and `.claude-plugin/plugin.json` together.
63
+ 4. Commit the release and tag that commit `vX.Y.Z`.
64
+ 5. Push `main` and the version tag. The tag triggers `publish.yml`.
65
+ 6. Verify the workflow and the npm registry version; a tag alone does not prove publication.
66
+ 7. Verify the plugin manifest on the default branch, which is also used by marketplace updates.
67
+
68
+ Do not include private workspace files merely to obtain a clean working tree.
69
+ Review the staged paths and actual npm payload before publishing.
package/README.md CHANGED
@@ -6,13 +6,13 @@
6
6
 
7
7
  </div>
8
8
 
9
- TiTools is a Titanium SDK toolkit for AI coding assistants. It ships 11 skills — 6 specialist skills (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-synthengine`) plus 5 documentation-mirror skills (`ti-api`, `ti-guides`, `ti-howtos`, `alloy-guides`, `alloy-howtos`) — a research agent, and reference files covering reuse and simplification, Titanium architecture, API reference, native how-tos, Alloy MVC, PurgeTSS styling and resource automation, UI/UX patterns, 2D games, and native sound synthesis.
9
+ TiTools is a Titanium SDK toolkit for AI coding assistants. It ships 13 skills — 8 specialist skills (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-game-assets`, `ti-synthengine`, `ti-admob-unified`) plus 5 documentation-mirror skills (`ti-api`, `ti-guides`, `ti-howtos`, `alloy-guides`, `alloy-howtos`) — a research agent, and reference files covering reuse and simplification, Titanium architecture, API reference, native how-tos, Alloy MVC, PurgeTSS styling and resource automation, UI/UX patterns, 2D games, and native sound synthesis.
10
10
 
11
11
  The reference files are maintained against official documentation whenever an official source exists, so the assistant can retrieve current framework behavior instead of guessing from generic training data. As of v5.0.0 those sources are the Titanium SDK's own API definitions and the rewritten guides at [titaniumsdk.com](https://titaniumsdk.com). [Where the references come from](#where-the-references-come-from) has the detail.
12
12
 
13
13
  Without TiTools, assistants rely on general training data. That data can be outdated or too generic for Titanium work. With TiTools, the assistant can look up Alloy architecture, memory cleanup patterns, PurgeTSS utility classes, and platform-specific APIs.
14
14
 
15
- Vercel's AGENTS.md evaluation reports a 100% pass rate for the knowledge index approach, compared to 53-79% using skills alone.
15
+ The optional knowledge index helps assistants discover the installed reference documents. See [skills and the knowledge index](docs/knowledge-index.md).
16
16
 
17
17
  ---
18
18
 
@@ -36,7 +36,7 @@ The fastest way to get started with Claude Code. One command to add the marketpl
36
36
  ```
37
37
 
38
38
  What you get:
39
- - All 11 TiTools skills (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-synthengine`, `ti-api`, `ti-guides`, `ti-howtos`, `alloy-guides`, `alloy-howtos`)
39
+ - All 13 TiTools skills (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-game-assets`, `ti-synthengine`, `ti-admob-unified`, `ti-api`, `ti-guides`, `ti-howtos`, `alloy-guides`, `alloy-howtos`)
40
40
  - ti-pro research agent
41
41
  - Session hook that auto-detects Titanium projects (`tiapp.xml`, Alloy, PurgeTSS, `ti.game`, `ti.synthengine`)
42
42
  - Slash commands: `/ti-check`, `/ti-new-screen`, `/ti-audit`
@@ -70,7 +70,7 @@ claude # or gemini, or codex
70
70
  ```
71
71
 
72
72
  What gets installed:
73
- - The 10 TiTools skills to `~/.agents/skills/`
73
+ - The 13 TiTools skills to `~/.agents/skills/`
74
74
  - ti-pro agent for Claude Code
75
75
  - Platform symlinks for Claude Code (Gemini CLI and Codex CLI auto-discover from `~/.agents/skills/` — no symlinks needed)
76
76
  - Knowledge index in your project's `AGENTS.md`/`CLAUDE.md`/`GEMINI.md`
@@ -115,20 +115,12 @@ All three platforms use the Agent Skills open standard: a `SKILL.md` file with Y
115
115
 
116
116
  The knowledge index is a compressed documentation map that gets injected into your project's instruction files. It tells the AI where Titanium reference docs are, so it can pull accurate information from the installed references instead of relying on general training data.
117
117
 
118
- ### Why it works
118
+ ### Reference discovery
119
119
 
120
- | Approach | Reported Pass Rate |
121
- | ---------------- | ------------------ |
122
- | No documentation | 53% |
123
- | Skills only | 53-79% |
124
- | Knowledge index | 100% |
125
-
126
- Per Vercel's evaluation:
127
- - No decision point: information is present without needing to invoke skills
128
- - Consistent availability: available in every turn, not async-loaded
129
- - No ordering issues: avoids "read docs first vs explore project first"
130
-
131
- For details, see `AGENTS-VERCEL-RESEARCH.md`.
120
+ Skills provide task-specific workflows; the knowledge index makes their reference
121
+ locations discoverable from your project's instruction files. Load the relevant
122
+ references before relying on an API, platform requirement or module contract.
123
+ See [how the index works](docs/knowledge-index.md).
132
124
 
133
125
  ### What gets generated
134
126
 
@@ -178,8 +170,10 @@ The knowledge index is based on the latest Titanium SDK documentation. If your p
178
170
  | ti-expert | Architecture and implementation | Starting point for most tasks |
179
171
  | purgetss | Alloy styling + asset automation | Utility classes; Alloy/Classic branding, images, colors, fonts and modules |
180
172
  | ti-ui | UI/UX patterns | Complex layouts, ListViews, platform UI |
181
- | ti-game | 2D games with the `ti.game` module | Sprites, physics, tile layers, wall jumps, pathfinding, text/performance HUDs, particles, camera |
182
- | ti-synthengine | Sound design with `ti.synthengine` | Tones, chords, retro/UI effects, alarms, sweeps, patterns, mixing and troubleshooting |
173
+ | ti-game | 2D games with the `ti.game` module | Sprites, physics, tile maps, HUDs, camera, focused keyboard/mouse/gamepad actions, Apple Metal/Catalyst |
174
+ | ti-game-assets | Visual and sound assets | Image generation/editing, synthesis variants, stereo placement, alpha cleanup, manifests, parallax and complete exports |
175
+ | ti-synthengine | Sound design with `ti.synthengine` | Tones, chords, retro/UI effects, alarms, sweeps, patterns, ADSR envelopes, resonant filters, FM, detune, binaural positioning, held voices, native sequences, master effects, voice LFOs, engine statistics, mixing and troubleshooting |
176
+ | ti-admob-unified | Advertising, privacy and mediation | Official `ti.admob.unified` guides, copy-ready library, banners/fullscreen, UMP/ATT and selected-provider configuration |
183
177
  | ti-api | Complete Titanium API reference | Looking up properties, methods, events |
184
178
  | ti-guides | SDK fundamentals | tiapp.xml, Hyperloop, distribution, JDK/Xcode compatibility, release notes |
185
179
  | ti-howtos | Native feature integration | Location, push, media, platform APIs |
@@ -187,10 +181,11 @@ The knowledge index is based on the latest Titanium SDK documentation. If your p
187
181
  | alloy-howtos | Alloy CLI, configuration, debugging | alloy.jmk, config.json, custom XML tags |
188
182
 
189
183
  Notes:
190
- - The first six (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-synthengine`) are specialist workflow skills reflecting TiTools' Titanium conventions and native-module contracts.
184
+ - The first eight (`ti-reuse-first`, `ti-expert`, `purgetss`, `ti-ui`, `ti-game`, `ti-game-assets`, `ti-synthengine`, `ti-admob-unified`) are specialist workflow skills reflecting TiTools' Titanium conventions and native-module contracts.
191
185
  - `ti-reuse-first` runs before the others. It asks whether a thing needs to exist and what already does it — a search order that stops at the first rung that holds — and sweeps an existing `app/` for near-identical controllers, single-listener events, wrappers around one call, and layout recomputed in JavaScript. It is deliberately two-sided: it says when adding a module or a Widget is the right answer, so the bias does not simply invert.
192
- - `ti-game` documents the `ti.game` native module (2D sprite engine on OpenGL ES 2.0, Android and iOS). Its API reference was verified against the module source and tracks upstream `main` (the module ships features ahead of its manifest version); it applies to Alloy and Classic projects alike and does not depend on PurgeTSS.
193
- - `ti-synthengine` translates aesthetic sound requests into strict, production-ready JavaScript for the cross-platform `ti.synthengine` 1.0.0 module. Seven references preserve the official documentation and an eighth adds curated retro, xylophone, memory-pad, polyphony and timer-ownership recipes; the API contract was cross-checked against both native implementations.
186
+ - `ti-game` documents the `ti.game` native module (2D sprite engine using OpenGL ES 2.0 on Android and Metal on iPhone, iPad and Mac Catalyst). Its API reference was verified against the module source and records the reviewed upstream commit and fork documentation snapshot; it applies to Alloy and Classic projects alike and does not depend on PurgeTSS.
187
+ - `ti-synthengine` translates sound requests into checked JavaScript for the public Android/iOS `ti.synthengine` 1.0.0 release. Its nineteen-method contract covers timed/held voices, identified native sequences, global tempo, selective categories/sends, master effects, live spatial/noise/filter controls and diagnostics. Two curated recipe guides cover retro cues and interactive instruments. Complete official-source mirrors, validation reports, bundled examples and raw evidence retain provenance; reversible errata correct source prose against native behavior. The clean reviewed commit, platform differences and scoped listening/performance acceptance are explicit in source notes.
188
+ - `ti-game-assets` treats images and sounds as essential game assets. It coordinates integrated `image_gen` artwork with `ti-synthengine` sound design, variants and stereo placement, and ships Pillow helpers for conservative alpha cleanup and per-world visual/audio manifests.
194
189
  - The latter five are documentation-mirror skills, audited against official sources via the internal `titools-skill-auditor`. See [Where the references come from](#where-the-references-come-from).
195
190
  - `purgetss` reference files are audited against the official PurgeTSS documentation and against the package source (the CLI and the generated `utilities.tss`), but its workflow conventions are opinionated.
196
191
 
@@ -225,14 +220,14 @@ In addition to skills, this repository includes sub-agents for Claude Code. Sub-
225
220
 
226
221
  ### ti-pro
227
222
 
228
- Deep-dive research specialist that can combine the complete 10-skill TiTools catalog.
223
+ Deep-dive research specialist that can combine the complete 13-skill TiTools catalog.
229
224
 
230
225
  | Aspect | Details |
231
226
  | ---------------- | ------------------------------------------------ |
232
227
  | Location | `~/.claude/agents/ti-pro.md` |
233
228
  | Model | Sonnet (comprehensive analysis) |
234
- | Tools | Read-only (Read, Grep, Glob) |
235
- | Preloaded Skills | All 10 skills registered in `lib/config.js` |
229
+ | Tools | Read, Grep, Glob, Bash |
230
+ | Preloaded Skills | All 13 skills registered in `lib/config.js` |
236
231
 
237
232
  When to use the agent vs skills:
238
233
 
@@ -274,7 +269,7 @@ TiTools provides slash commands for common tasks. Both channels ship them: the p
274
269
  These commands automatically invoke the relevant skills:
275
270
  - `/ti-check` reads `tiapp.xml`, validates declared native modules, and reports project health
276
271
  - `/ti-new-screen` uses `ti-expert` + `purgetss` to create properly structured files
277
- - `/ti-audit` routes all 11 skills: the reuse sweep first, core Titanium checks always, Alloy/PurgeTSS checks when detected, integration how-tos when used, and `ti-game` / `ti-synthengine` checks when those modules are declared
272
+ - `/ti-audit` routes all 13 skills: the reuse sweep first, core Titanium checks always, Alloy/PurgeTSS checks when detected, integration how-tos when used, `ti-game-assets` checks for game asset workflows, and `ti-game` / `ti-synthengine` / `ti-admob-unified` checks when those modules are declared
278
273
 
279
274
  ---
280
275
 
@@ -318,6 +313,8 @@ All skills include automatic project detection to ensure compatibility:
318
313
  | ti-expert | Alloy vs Classic | Checks for `app/` (Alloy) vs `Resources/` (Classic) structure |
319
314
  | ti-ui | Titanium projects | Checks for `tiapp.xml` (both Alloy and Classic) |
320
315
  | ti-game | ti.game module | Checks for `<module>ti.game</module>` in `tiapp.xml` or `require('ti.game')` |
316
+ | ti-game-assets | Game art/sound workflows | Reads asset inventories, generation/export workflows and requested visual or sound assets; no module install required for drawings |
317
+ | ti-admob-unified | ti.admob.unified and mediation | Declared core/complement modules or requested ad/privacy/provider integration |
321
318
  | ti-synthengine | ti.synthengine module | Checks for `<module>ti.synthengine</module>` in `tiapp.xml` or `require('ti.synthengine')` |
322
319
 
323
320
  Why this matters:
@@ -333,11 +330,12 @@ Why this matters:
333
330
  | --- | --- |
334
331
  | Whether to build it at all | `ti-reuse-first`, first |
335
332
  | Architecture and UI | `ti-expert`, `ti-ui`, `purgetss` when configured |
336
- | Native modules | `ti-game`, `ti-synthengine` when declared |
333
+ | Game assets | `ti-game-assets` for visual and sound creation, preparation and integration |
334
+ | Native modules | `ti-game`, `ti-synthengine`, `ti-admob-unified` when declared or requested |
337
335
  | Exact SDK/API guidance | `ti-api`, `ti-guides`, `ti-howtos` |
338
336
  | Alloy MVC and tooling | `alloy-guides`, `alloy-howtos` for Alloy projects |
339
337
 
340
- All eleven ship with TiTools; no second skill package is required.
338
+ All thirteen ship with TiTools; no second skill package is required.
341
339
 
342
340
  ---
343
341
 
@@ -454,7 +452,7 @@ Key rules:
454
452
 
455
453
  ### ti-game
456
454
 
457
- 2D game development with the `ti.game` native module — a sprite engine rendered with OpenGL ES 2.0, same JS API on Android and iOS. Works in Alloy and Classic projects.
455
+ 2D game development with the `ti.game` native module — a sprite engine rendered with OpenGL ES 2.0 on Android and Metal on iPhone, iPad and Mac Catalyst, with a mostly shared JS API. Works in Alloy and Classic projects.
458
456
 
459
457
  When it activates:
460
458
  - `tiapp.xml` declares `ti.game`, or any file calls `require('ti.game')`
@@ -472,6 +470,7 @@ When it activates:
472
470
  - Native `TileLayer` maps with visible-cell rendering, Tiled GIDs, solid/one-way cells, live edits and A* integration
473
471
  - Collision-shape overlays plus the expandable performance HUD and opt-in `performance` telemetry event
474
472
  - Drag & drop, pinch, rotate, multitouch controls
473
+ - Focused keyboard/mouse/gamepad actions, input contexts, canvas focus and native text-field ownership
475
474
 
476
475
  Example prompts:
477
476
  ```
@@ -502,33 +501,87 @@ Key rules:
502
501
 
503
502
  ---
504
503
 
504
+ ### ti-game-assets
505
+
506
+ Create game art and sound assets as a coherent set: transparent HD masters or strict logical-grid pixel art, animation states, three-layer parallax, synthesized effects/music/ambience, related sound variants and screen-position stereo. `ti-game` owns native game behavior and `ti-synthengine` owns the sound contract; the asset skill coordinates both.
507
+
508
+ For the processing helpers and development tests, install Python dependencies in a virtual environment:
509
+
510
+ ```bash
511
+ python3 -m venv /tmp/titools-assets-env
512
+ /tmp/titools-assets-env/bin/pip install -r skills/ti-game-assets/scripts/requirements.txt
513
+ TITOOLS_ASSETS_PYTHON=/tmp/titools-assets-env/bin/python npm test
514
+ ```
515
+
516
+ Raster drawing generation/editing uses integrated `image_gen`. Authored SVG/procedural pipelines preserve editable sources and deterministically export PNG; offline synthesis can generate WAV. The bundled Python helpers validate alpha, SVG provenance, hashes and WAV headers/payloads. Cleaning writes new files and requires a reviewed protected region or an explicit defined-edge trial. Sound recipes remain source assets even without recorded audio files. Guides cover seamless texture/audio loops and responsible ad transitions through the separate `ti-admob-unified` skill. Technical checks, visual inspection and device listening are reported separately.
517
+
518
+ ### ti-admob-unified
519
+
520
+ Integrate public **ti.admob.unified 1.0.0** in Alloy or Classic with its official
521
+ [repository](https://github.com/macCesar/ti.admob.unified),
522
+ [Android downloads](https://github.com/macCesar/ti.admob.unified/releases/tag/android-1.0.0)
523
+ and [iOS downloads](https://github.com/macCesar/ti.admob.unified/releases/tag/ios-1.0.0).
524
+ Install the core ZIP for each target and only the mediation complements you use.
525
+ Requires Titanium SDK 13.4.1.GA, iOS 15+, Android API 24+ and compile SDK 36;
526
+ this Apple module does not support Mac Catalyst.
527
+
528
+ The skill covers consent-first UMP/ATT, synchronous tracking-status queries,
529
+ standard/adaptive banners, interstitial, rewarded, rewarded interstitial and
530
+ app-open ads. It includes the unchanged copy-ready integration library and
531
+ AppLovin, Meta, InMobi, Unity and Liftoff setup/dependency/parity guides.
532
+ Rewarded interstitial guidance includes an accurate reward introduction,
533
+ visible Skip, SDK-reported rewards and cancellation tied to the presentation
534
+ context. Loading an ad alone does not authorize showing it.
535
+
536
+ The [skill entry point](skills/ti-admob-unified/SKILL.md) routes exact API,
537
+ installation, lifecycle and [production guidance](skills/ti-admob-unified/references/production.md)
538
+ for app IDs, units, app-ads.txt, privacy options and AdMob/store readiness.
539
+ [Source notes](skills/ti-admob-unified/references/source-notes.md) record reviewed
540
+ source `0348432`, platform ZIP hashes and native-backed corrections.
541
+
542
+ A packaged adapter or Google test ad does not prove provider delivery or
543
+ production eligibility. Keep configuration/linking, each selected provider's
544
+ test delivery and physical-device visual/lifecycle acceptance separate. Game
545
+ frequency and pause/audio/input ownership remain application policies.
546
+
505
547
  ### ti-synthengine
506
548
 
507
- Cross-platform sound design and synthesis with the native `ti.synthengine` 1.0.0 module for Android and iOS.
549
+ Sound design and synthesis with the public native `ti.synthengine` 1.0.0 release for Android and iOS. Read the [skill entry point](skills/ti-synthengine/SKILL.md) for task routing, exact API references and current source provenance.
550
+
551
+ Public repository: [macCesar/TiSynthEngine](https://github.com/macCesar/TiSynthEngine).
552
+ Download [Android 1.0.0](https://github.com/macCesar/TiSynthEngine/releases/tag/android-1.0.0)
553
+ and [iOS 1.0.0](https://github.com/macCesar/TiSynthEngine/releases/tag/ios-1.0.0),
554
+ copy the ZIPs into the Titanium app root and follow the [installation guide](skills/ti-synthengine/references/guide.md).
555
+ Requires Titanium SDK 13.2.0.GA+, Android compile API35+, and iOS 15+; the Apple package also supports Mac Catalyst.
508
556
 
509
557
  When it activates:
510
558
  - `tiapp.xml` declares `ti.synthengine`, or code calls `require('ti.synthengine')`
511
- - The app needs generated UI feedback, game cues, retro/chiptune effects, alarms, chords, pads, noise percussion, sweeps, panning, or vibrato
512
- - A synth call returns `false`, the first sound glitches, a pattern stops, a chord pumps, or output changes after a route switch
559
+ - Generated UI/game cues, instruments, alarms, chords, percussion, sweeps or binaural headphone placement
560
+ - Sustained voices, simultaneous native sequences, shared tempo, selective effects/sends, priorities or live voice controls
561
+ - Rejected calls, startup glitches, voice/queue diagnostics, render-load measurements or source/artifact compatibility questions
513
562
 
514
563
  Example prompts:
515
564
  ```
516
565
  "Create a short sci-fi laser that sweeps left to right with ti.synthengine."
517
- "Design a clean two-note success cue for a Titanium button."
518
- "Build a playable xylophone that can glide across bars without retriggering the same note on every touchmove."
519
- "Create a layered 12-voice chord and stop its repeating pulse cleanly when the window closes."
520
- "Why does playTone return false when the object looks valid?"
521
- "Start the engine safely after my Alloy window lays out and clean it up on close."
566
+ "Build a playable xylophone without retriggering a bar on every touchmove."
567
+ "Move a held spatial motor and change its noise clock and low-pass cutoff without restarting it."
568
+ "Run music and a victory cue as independent native sequences, then cancel only the cue."
569
+ "Apply reverb to music while keeping UI dry, and change the global tempo."
570
+ "Explain what the Android Sim80 headphone result proves about performance."
522
571
  ```
523
572
 
524
573
  Key rules:
525
- - Option objects are closed contracts. Unsupported keys, invalid types, non-finite values, or broken envelopes reject the whole call
526
- - Read waveform constants from `synth.getDefaults().waveTypes`; never guess numeric values or option names
527
- - `playTone` accepts `note` or `frequency`, never both; `playChord` accepts `notes` or `frequencies`, never both
528
- - `duration` includes attack, the full-level middle, and release, so explicit envelope times must intersect correctly
529
- - Use `frequencyEnd` for sweeps, `panEnd` for stereo movement, and `lfoFreq`/`lfoDepth` for pitch vibrato
530
- - Curated recipes cover retro effects, playable xylophone gestures, four-pad memory cues, controlled waveform comparisons, layered chords and cancellable repetition
531
- - Start after the first layout settles, keep one lifecycle owner, check Boolean returns, and call `shutdown()` on cleanup
574
+ - Read constants and exact ranges from the API; strict option dictionaries reject invalid fields or conflicting pitch sources
575
+ - Timed tone/chord `duration` includes release. Native sequence intervals and note lengths are separate; held voices release through their IDs
576
+ - Schedule successive sounds with `playSequence`, retain positive accepted IDs and cancel the owner's sequence. `stopAll()` is global panic
577
+ - `setTempo` drives beat-based transport and synchronized modulation; millisecond sequences keep fixed timing
578
+ - `bus`/`applyTo` select processed categories; explicit `effectSend` overrides that selection. One shared chain and final limiter remain global
579
+ - Held spatial position, noise clock and one-pole cutoff support compatible 10 ms updates. A stereo voice cannot become spatial through an update
580
+ - Omit both spatial coordinates for stereo; zero coordinates enable binaural center. Do not combine binaural coordinates with stereo pan fields
581
+ - Start after layout, keep one lifecycle owner, handle Boolean acceptance and sequence IDs, release held notes on cancellation and shut down during teardown
582
+ - Current platform metadata, zero-envelope and diagnostic differences are documented. Host checks and a short accepted listening scene do not establish complete physical maximum-load acceptance
583
+
584
+ The [retro recipes](skills/ti-synthengine/references/recipes.md) and [interaction/instrument recipes](skills/ti-synthengine/references/recipes-interaction.md) preserve acoustic intent, overlap budgets and cleanup. [Source notes](skills/ti-synthengine/references/source-notes.md) identify the reviewed native commit and evidence limits.
532
585
 
533
586
  ---
534
587
 
@@ -597,7 +650,7 @@ Codebase analysis (using agent):
597
650
  4. Mention constraints. "Build a settings screen. Must work offline and sync when connected."
598
651
  5. Reference existing code. "Here's my current controller. How can I improve memory management?"
599
652
 
600
- More examples: See [Example Prompts](EXAMPLE-PROMPTS.md) for detailed prompts that test each skill's capabilities.
653
+ See [example prompts](docs/examples.md) for requests covering every public skill.
601
654
 
602
655
  ---
603
656
 
@@ -627,7 +680,7 @@ Behavior depends on where you run it:
627
680
  | With `--local` flag | Installs skills locally to `./.agents/skills/` in the current project |
628
681
 
629
682
  What it does:
630
- - Installs the 10 TiTools skills (global or local depending on context)
683
+ - Installs the 13 TiTools skills (global or local depending on context)
631
684
  - Installs ti-pro agent for Claude Code
632
685
  - Installs the `/ti-check`, `/ti-new-screen` and `/ti-audit` slash commands into `~/.claude/commands/`
633
686
  - Detects installed AI platforms and lets you choose which to link (only Claude Code needs platform symlinks; Gemini CLI and Codex CLI auto-discover from `~/.agents/skills/`)
@@ -832,11 +885,18 @@ This pattern is documented across four bundled TiTools skills: `ti-ui`, `ti-expe
832
885
  | Skill | SKILL.md | References |
833
886
  | --------- | ----------------------------- | ----------------------------------------------------- |
834
887
  | ti-reuse-first | Reuse Before You Write | 5 files (the ladder, Alloy reuse, indirection, PurgeTSS reuse, diagnostics) |
835
- | ti-expert | Architecture + Implementation | 26 files (patterns, feedback surfaces, file type association, sharing, testing, security, etc.) |
836
- | purgetss | Setup + Critical Rules | 34 files (Classic compatibility, grid, animations, icons, class-index, SVG pipeline, etc.) |
888
+ | ti-expert | Architecture + Implementation | 27 files (patterns, feedback surfaces, file type association, sharing, testing, security, etc.) |
889
+ | purgetss | Setup + Critical Rules | 39 files (Classic compatibility, grid, animations, icons, class-index, SVG pipeline, etc.) |
837
890
  | ti-ui | UI Rules + Platform Diffs | 14 files (layouts, lists, gestures, etc.) |
838
- | ti-game | Native 2D Game Workflow | 9 files (API, setup, patterns, recipes, tile maps, debugging, roadmap) |
839
- | ti-synthengine | Native Sound Synthesis | 8 files (API, sound design, lifecycle, engine, official examples, curated recipes, recommendations, troubleshooting) |
891
+ | ti-game | Native 2D Game Workflow | 12 files (API, input, source notes, setup, physics, patterns, recipes, tile maps, debugging, roadmap) |
892
+ | ti-game-assets | Visual and Sound Assets | 10 guides and a manifest example; alpha and contract validation scripts |
893
+ | ti-admob-unified | Unified Advertising | 20 Markdown references including production, rewarded interstitial, mediation parity, integration library guidance, provenance and game monetization; source/hash checks and official example assets |
894
+ | ti-synthengine | Native Sound Synthesis | 12 Markdown references (9 official parts, 2 curated recipe guides, maintenance notes), complete validation reports/evidence and a reversible source hash manifest |
895
+ | ti-api | Titanium API | 20 references for core/platform APIs and native modules |
896
+ | ti-guides | SDK Fundamentals | 16 references for setup, configuration, CLI and distribution |
897
+ | ti-howtos | Native Integrations | 18 references for platform features and integration workflows |
898
+ | alloy-guides | Alloy MVC | 11 references for controllers, views, models, styling and widgets |
899
+ | alloy-howtos | Alloy CLI and Debugging | 6 references for commands, configuration and practical workflows |
840
900
 
841
901
  ---
842
902
 
@@ -920,28 +980,8 @@ Note: `titools remove` can remove the knowledge index blocks from your project f
920
980
 
921
981
  ## Contributing
922
982
 
923
- 1. Fork the repository
924
- 2. Improve SKILL.md or reference files
925
- 3. Test with your preferred AI coding assistant
926
- 4. Submit a pull request
927
-
928
- ### Guidelines
929
- - Keep SKILL.md concise (<500 lines)
930
- - Use progressive disclosure (details in references)
931
- - Include concrete examples
932
- - Test with real sessions
933
-
934
- ---
935
-
936
- ## Legacy installation (not recommended)
937
-
938
- The bash installer is maintained for backward compatibility but NPM installation is recommended.
939
-
940
- ```bash
941
- curl -fsSL https://raw.githubusercontent.com/macCesar/titools/main/install.sh | bash
942
- ```
943
-
944
- Use this only if you cannot use NPM for any reason.
983
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for development, skill registration,
984
+ public repository boundaries and the release workflow.
945
985
 
946
986
  ---
947
987
 
package/agents/ti-pro.md CHANGED
@@ -7,7 +7,9 @@ skills:
7
7
  - purgetss
8
8
  - ti-ui
9
9
  - ti-game
10
+ - ti-game-assets
10
11
  - ti-synthengine
12
+ - ti-admob-unified
11
13
  - ti-api
12
14
  - ti-guides
13
15
  - ti-howtos
@@ -29,8 +31,10 @@ When invoked, research complex topics by consulting the applicable skills from t
29
31
  - `ti-expert` - Architecture, patterns, conventions
30
32
  - `purgetss` - Utility-first styling classes (optional add-on; use when the project already has it or the user asks about it)
31
33
  - `ti-ui` - UI/UX patterns, layouts, gestures
34
+ - `ti-game-assets` - Visual and sound asset contracts, raster generation, alpha/export validation, synthesis variants and stereo coordination when assets are involved
32
35
  - `ti-game` - Native `ti.game` architecture and API when the module is declared
33
- - `ti-synthengine` - Native sound synthesis and strict `ti.synthengine` contract when the module is declared
36
+ - `ti-synthengine` - Native synthesis, held voices, identified sequences/tempo, selective processing, live controls and platform/evidence limits when the module is declared or requested
37
+ - `ti-admob-unified` - Official unified advertising/privacy/mediation module contract and provider setup when declared or requested
34
38
  - `ti-api`, `ti-guides`, `ti-howtos` - Exact Titanium APIs, SDK fundamentals and native integrations
35
39
  - `alloy-guides`, `alloy-howtos` - Alloy MVC, CLI, configuration and compiler workflows when the project is Alloy
36
40
 
@@ -23,7 +23,11 @@ Project-type audit:
23
23
  Native-module audit:
24
24
 
25
25
  10. If the project declares `ti.game`, invoke `ti-game` — check for sprites moved from timers instead of native properties, levels sized from `Ti.Platform.displayCaps` instead of the `resize` event, sprites added one by one instead of in one array, and timers or sounds left running when the window closes.
26
- 11. If the project declares `ti.synthengine`, invoke `ti-synthengine` — check strict option names and types, mutually exclusive pitch fields, valid envelope intersections, checked Boolean results, one clear lifecycle owner, delayed startup after layout, app-owned timer cancellation, and `shutdown()` cleanup.
26
+ 11. If the project declares `ti.synthengine`, invoke `ti-synthengine` — check exact option/pitch/envelope contracts, Boolean acceptance and positive sequence IDs, native successive-note scheduling, per-owner sequence cancellation, held-note release/cancellation and compatible live updates. Check shared tempo versus millisecond timing, category/send selection, overlap/priority budgets, one lifecycle owner, delayed startup and teardown. Consult current source notes before assuming platform metadata/envelopes or rejection diagnostics match; separate host/load reports from scoped physical listening acceptance.
27
+
28
+ 12. If the project has game art/sound inventories or asset-generation/export workflows, invoke `ti-game-assets` — check contracts per set, master provenance/transparency, protected alpha cleanup, frame/pivot alignment, complete derived exports, parallax layers, sound variants and semantic event bindings. Consult `ti-game` and `ti-synthengine` equally in their applicable domains; do not require module installation or new sounds for an image-only task.
29
+
30
+ 13. If the project declares `ti.admob.unified`/mediation complements or uses this module, invoke `ti-admob-unified` — verify public release/platform requirements, consent/request eligibility/initialization, ATT status versus permission, test IDs, independent banner lifecycle and deliberate fullscreen ownership. Check rewarded interstitial's reward introduction, visible Skip, reward-event credit and pending-context cancellation. Use the production guide for app IDs, app-ads.txt, privacy entry points and account readiness. Separate linking, Google test ads, selected-provider delivery and physical acceptance; preserve game frequency and pause/audio/input policy.
27
31
 
28
32
  If a conditional skill does not apply, record it as `not applicable` with the detected reason instead of inventing findings from it.
29
33
 
@@ -0,0 +1,91 @@
1
+ # Example prompts
2
+
3
+ Use these requests as starting points with an assistant that has TiTools installed.
4
+ Mention the framework, module and platform involved. Conditional skills apply
5
+ when the project uses that technology; an image request does not require adding
6
+ an audio or advertising module.
7
+
8
+ ## Reuse and simplification — ti-reuse-first
9
+
10
+ - "Find whether this Alloy project already has a suitable confirmation panel before adding another one."
11
+ - "Review these repeated controller wrappers and explain which can be simplified without changing behavior."
12
+
13
+ ## Architecture — ti-expert
14
+
15
+ - "Organize this Alloy screen so navigation, data access and view state have clear owners."
16
+ - "Review this controller for timer, listener and window lifecycle leaks."
17
+
18
+ ## PurgeTSS — purgetss
19
+
20
+ - "Style this Alloy layout with the PurgeTSS classes supported by the installed version."
21
+ - "Prepare responsive images for this Classic Titanium project using the supported PurgeTSS asset workflow."
22
+
23
+ ## Native UI — ti-ui
24
+
25
+ - "Build a ListView with reusable templates and predictable row heights."
26
+ - "Check this window's safe-area, orientation and gesture handling on Android and iOS."
27
+
28
+ ## Native games — ti-game
29
+
30
+ - "Build a platformer using native velocity, gravity and collision events instead of a JavaScript frame loop."
31
+ - "Map keyboard and gamepad input to named actions while keeping native text-field focus usable."
32
+
33
+ ## Visual and sound assets — ti-game-assets
34
+
35
+ - "Prepare a consistent sprite sheet, animation frames and three-layer parallax set for this game."
36
+ - "Create three related pickup sound variants and an asset manifest with export and listening checks."
37
+
38
+ ## Native synthesis — ti-synthengine
39
+
40
+ - "Install the public TiSynthEngine 1.0.0 Android/iOS packages and start audio after the window layout settles."
41
+ - "Move a held spatial motor, process only music with reverb, and stop one native sequence without cancelling unrelated sounds."
42
+
43
+ Use the [synthesis skill](../skills/ti-synthengine/SKILL.md) for exact options,
44
+ public downloads and scoped performance evidence. Native sequence scheduling,
45
+ held-voice ownership and historical/private artifacts have distinct contracts.
46
+
47
+ ## Advertising — ti-admob-unified
48
+
49
+ - "Install public ti.admob.unified 1.0.0 on Android/iOS and configure consent-first startup with the official integration library."
50
+ - "Offer a rewarded interstitial at a natural transition with a clear reward, a visible Skip option and cancellation when the screen changes."
51
+ - "Check selected mediation providers and production readiness, including app IDs, app-ads.txt and privacy options, without treating Google test ads as provider acceptance."
52
+
53
+ Use the [public Android](https://github.com/macCesar/ti.admob.unified/releases/tag/android-1.0.0)
54
+ and [iOS](https://github.com/macCesar/ti.admob.unified/releases/tag/ios-1.0.0)
55
+ packages and the [module skill](../skills/ti-admob-unified/SKILL.md). A synchronous
56
+ ATT query is separate from UMP eligibility; Android's ATT convention is not
57
+ permission for general tracking. Real account/provider delivery needs its own
58
+ validation beyond the module's publication.
59
+
60
+ ## Exact Titanium APIs — ti-api
61
+
62
+ - "Verify the supported properties and event payloads for this Titanium ListView implementation."
63
+ - "Check this platform-specific API call against the SDK version used by the project."
64
+
65
+ ## SDK fundamentals — ti-guides
66
+
67
+ - "Check this tiapp.xml and explain the relevant build and platform requirements."
68
+ - "Set up the CommonJS modules and assets for a maintainable Classic Titanium project."
69
+
70
+ ## Native integrations — ti-howtos
71
+
72
+ - "Implement location permissions and lifecycle handling for this Android/iOS app."
73
+ - "Review this camera and file-sharing flow, including its required platform configuration."
74
+
75
+ ## Alloy MVC — alloy-guides
76
+
77
+ - "Separate the controller, XML view and TSS responsibilities on this Alloy screen."
78
+ - "Explain how this model collection, binding and cleanup should work."
79
+
80
+ ## Alloy tools — alloy-howtos
81
+
82
+ - "Generate an Alloy controller and place its files according to the documented project structure."
83
+ - "Diagnose this Alloy compilation error and check the relevant CLI and configuration options."
84
+
85
+ ## Combining skills
86
+
87
+ "Review an Alloy game that uses PurgeTSS, ti.game and ti.synthengine. Start with
88
+ existing components, then check scene input, native audio ownership and cleanup
89
+ using the appropriate references."
90
+
91
+ See [how the knowledge index works](knowledge-index.md) for reference discovery.
@@ -0,0 +1,57 @@
1
+ # Skills and the knowledge index
2
+
3
+ TiTools provides task-oriented skills and reference documents for Titanium SDK,
4
+ Alloy and related native modules. A skill describes when its workflow applies;
5
+ its references supply the details needed for that task.
6
+
7
+ The optional knowledge index helps an assistant find the available references
8
+ from the consuming project's instruction files. It is navigation, not a copy
9
+ of every reference and not a promise about an assistant's answer accuracy.
10
+
11
+ ## Generate an index
12
+
13
+ From a Titanium project containing `tiapp.xml`, run:
14
+
15
+ ```sh
16
+ titools sync
17
+ ```
18
+
19
+ Select the applicable instruction files, such as `AGENTS.md`, `CLAUDE.md` or
20
+ `GEMINI.md`. TiTools maintains a delimited index block rather than replacing the
21
+ project's other instructions. Re-running sync updates that block.
22
+
23
+ Do not run project sync from the TiTools source repository. Installing skills
24
+ and generating an index in a consuming app are separate operations.
25
+
26
+ ## Choose the relevant skills
27
+
28
+ The catalog contains thirteen public skills:
29
+
30
+ | Task | Skill |
31
+ | --- | --- |
32
+ | Reuse and simplification | `ti-reuse-first` |
33
+ | Architecture and implementation | `ti-expert` |
34
+ | PurgeTSS styling and assets | `purgetss` |
35
+ | Titanium UI | `ti-ui` |
36
+ | Native game behavior | `ti-game` |
37
+ | Visual and sound asset production | `ti-game-assets` |
38
+ | Native synthesis | `ti-synthengine` |
39
+ | Unified advertising | `ti-admob-unified` |
40
+ | Exact Titanium APIs | `ti-api` |
41
+ | SDK fundamentals | `ti-guides` |
42
+ | Native integrations | `ti-howtos` |
43
+ | Alloy MVC | `alloy-guides` |
44
+ | Alloy CLI and debugging | `alloy-howtos` |
45
+
46
+ Conditional scopes depend on the app. A Titanium project does not automatically
47
+ need PurgeTSS, games, synthesis or advertising. The `ti-pro` research agent can
48
+ combine the relevant references for questions that cross those boundaries.
49
+
50
+ ## Keep references current
51
+
52
+ Update the installed TiTools package and use `titools update` to refresh installed
53
+ content. Use `titools status` and `titools doctor` to inspect installation health.
54
+ An index cannot establish which native module binary is installed: check that
55
+ module's release and artifact contract separately.
56
+
57
+ See [example prompts](examples.md) and the [CLI documentation](../README.md).
package/lib/config.js CHANGED
@@ -35,7 +35,9 @@ export const SKILLS = [
35
35
  'purgetss',
36
36
  'ti-ui',
37
37
  'ti-game',
38
+ 'ti-game-assets',
38
39
  'ti-synthengine',
40
+ 'ti-admob-unified',
39
41
  'ti-api',
40
42
  'ti-guides',
41
43
  'ti-howtos',
package/lib/downloader.js CHANGED
@@ -99,7 +99,7 @@ export async function downloadRepoArchive(destDir, ref = 'main') {
99
99
 
100
100
  /**
101
101
  * Download a single file from GitHub raw content
102
- * @param {string} filePath - Path in repository (e.g., 'AGENTS-VERCEL-RESEARCH.md')
102
+ * @param {string} filePath - Path in repository (e.g., 'docs/knowledge-index.md')
103
103
  * @param {string} destPath - Local destination path
104
104
  * @param {string} ref - Git ref (branch, tag, commit)
105
105
  * @returns {Promise<void>}