Secrets Vault Manager
alirezarezvani/claude-skills
A skill your agent uses when the user asks to set up secret management infrastructure, integrate HashiCorp Vault, configure cloud secret stores (AWS Secrets Manager, Azure Key Vault, GCP Secret…
A skill your agent uses when using the Phaser 4 DataManager to store custom key-value data on game objects, listen for data change events, or manage game state.
$ npx skills add autonomous-ai/openharness --skill data-manager -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install autonomous-ai/openharness data-manager --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/store/agents/phaser/skills/data-manager .claude/skills/data-manager && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "data-manager" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/data-manager into .claude/skills/data-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-manager", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/data-managerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add autonomous-ai/openharness --skill data-manager -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install autonomous-ai/openharness data-manager --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/store/agents/phaser/skills/data-manager .agents/skills/data-manager && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "data-manager" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/data-manager into .agents/skills/data-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-manager", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add autonomous-ai/openharness --skill data-manager -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install autonomous-ai/openharness data-manager --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/store/agents/phaser/skills/data-manager .cursor/skills/data-manager && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "data-manager" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/data-manager into .cursor/skills/data-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-manager", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/autonomous-ai/openharness.git --path store/agents/phaser/skills/data-manager--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add autonomous-ai/openharness --skill data-manager -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install autonomous-ai/openharness data-manager --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/store/agents/phaser/skills/data-manager .gemini/skills/data-manager && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "data-manager" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/data-manager into .gemini/skills/data-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-manager", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install autonomous-ai/openharness data-managerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add autonomous-ai/openharness --skill data-manager -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .github/skills && cp -r skills-src/store/agents/phaser/skills/data-manager .github/skills/data-manager && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "data-manager" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/data-manager into .github/skills/data-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-manager", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add autonomous-ai/openharness --skill data-manager -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install autonomous-ai/openharness data-manager --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/store/agents/phaser/skills/data-manager .opencode/skills/data-manager && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "data-manager" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/phaser/skills/data-manager into .opencode/skills/data-manager/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "data-manager", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
data-managerA skill your agent uses when using the Phaser 4 DataManager to store custom key-value data on game objects, listen for data change events, or manage game state.
Data Manager is an agent skill from autonomous-ai/openharness. Use this skill when using the Phaser 4 DataManager to store custom key-value data on game objects, listen for data change events, or manage game state. Triggers on: setData, getData, data events, custom data storage.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: The ultimate harness for coding agents and beyond. All your agents. All your machines. One command center. Start with code, then follow your curiosity and build across… The licence is MIT.
Read from SKILL.md and the folder at commit 54a1f1b. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CHANGE_DATA_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Data Manager loads about 4.2k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 1,298 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from autonomous-ai/openharness at commit 54a1f1b, republished under its MIT licence (© autonomous-ai). 1,298 words, ~4,215 tokens.
.claude/skills/data-manager/SKILL.md (or your agent's skills folder).Phaser's DataManager provides key-value storage with event-driven change tracking. It operates at three levels: per-GameObject (
sprite.setData/getData), per-Scene (this.data), and global (this.registry). Every set/change/remove operation emits events, enabling reactive data binding between game systems without tight coupling.
Key source paths: src/data/DataManager.js, src/data/DataManagerPlugin.js, src/data/events/, src/gameobjects/GameObject.js (setData/getData/incData/toggleData)
Related skills: ../scenes/SKILL.md, ../events-system/SKILL.md
// Per-GameObject data (auto-creates DataManager on first use)
const gem = this.add.sprite(100, 100, 'gem');
gem.setData('value', 50);
gem.setData({ color: 'red', level: 2 });
gem.getData('value'); // 50
gem.getData(['value', 'color']); // [50, 'red']
// Increment / toggle helpers
gem.incData('value', 10); // value is now 60
gem.incData('value', -5); // value is now 55 (negative to decrement)
gem.toggleData('active'); // false -> true (starts from false if unset)
// Scene-level data (this.data is a DataManagerPlugin)
this.data.set('score', 0);
this.data.get('score'); // 0
this.data.values.score += 100; // triggers changedata event
// Global registry (shared across ALL scenes)
this.registry.set('highScore', 9999);
// Any scene can read it:
this.registry.get('highScore'); // 9999Phaser.Data.DataManager)The base class that stores key-value pairs in an internal list object. It provides:
set(key, value) -- stores a value; emits setdata (new key) or changedata + changedata-{key} (existing key). Accepts an object to set multiple keys at once.get(key) -- retrieves a value, or pass an array of keys to get an array of values.inc(key, amount) -- increments a numeric value (defaults to +1). Creates from 0 if key does not exist.toggle(key) -- flips a boolean value. Creates from false if key does not exist.remove(key) -- deletes a key; emits removedata. Accepts an array of keys.has(key) -- returns true if the key exists.getAll() -- returns a shallow copy of all key-value pairs as a plain object.query(regex) -- returns all entries whose keys match the given RegExp.each(callback, context, ...args) -- iterates all entries. Callback signature: (parent, key, value, ...args).merge(data, overwrite) -- bulk-imports from an object. overwrite defaults to true; set false to skip existing keys.pop(key) -- retrieves and deletes a key in one call; emits removedata.reset() -- clears all data and unfreezes.freeze / setFreeze(bool) -- when frozen, all set/remove/inc/toggle operations silently no-op.count -- read-only property returning the number of stored entries.The values proxy object allows direct property access with event emission:
// After set('gold', 100), you can do:
data.values.gold += 50; // emits changedata and changedata-gold
// But you MUST use set() to create a key first -- direct assignment
// to values for a new key will NOT set up the event proxy.Phaser.Data.DataManagerPlugin)Extends DataManager. Registered as the data scene plugin, accessible as this.data in any Scene. It uses the Scene's event emitter (scene.sys.events), so data events fire on the Scene's event bus.
// In a Scene's create():
this.data.set('lives', 3);
// Listen on the scene's event emitter
this.events.on('changedata-lives', (scene, value, previousValue) => {
console.log('Lives changed from', previousValue, 'to', value);
});The plugin auto-cleans on scene shutdown (removes its shutdown listener) and fully destroys on scene destroy.
The registry is a plain DataManager instance on the Game object (game.registry). It has its own dedicated EventEmitter (not shared with any scene). Every scene gets a reference as this.registry via the injection map.
// Scene A sets global data
this.registry.set('currentLevel', 1);
// Scene B reads it
const level = this.registry.get('currentLevel');
// Listen for registry changes (note: events fire on registry.events, NOT this.events)
this.registry.events.on('changedata-currentLevel', (game, value, previousValue) => {
console.log('Level changed to', value);
});The registry persists for the lifetime of the Game. It is never automatically cleared on scene restart or shutdown.
GameObjects do NOT have a DataManager by default. It is created lazily on first call to setData(), getData(), incData(), or toggleData(). You can also explicitly call setDataEnabled().
The DataManager's event emitter is the GameObject itself (which extends EventEmitter), so data events fire directly on the GameObject:
const player = this.add.sprite(0, 0, 'player');
player.setData('hp', 100);
// Listen directly on the game object
player.on('changedata-hp', (gameObject, value, previousValue) => {
if (value <= 0) {
gameObject.destroy();
}
});// Single key
sprite.setData('speed', 200);
sprite.getData('speed'); // 200
// Multiple keys at once (object form)
sprite.setData({ speed: 200, direction: 'left', hp: 100 });
// Batch get with destructuring
const [speed, hp] = sprite.getData(['speed', 'hp']);
// Direct values access (read and write after initial set)
sprite.data.values.speed = 300; // emits changedata event
const s = sprite.data.values.speed; // 300// Listen for ANY data change on a game object
sprite.on('changedata', (gameObject, key, value, previousValue) => {
console.log(key, 'changed to', value);
});
// Listen for a SPECIFIC key change (preferred -- more efficient)
sprite.on('changedata-hp', (gameObject, value, previousValue) => {
this.hpBar.setValue(value);
});
// Listen for new data being set (first time only)
sprite.on('setdata', (gameObject, key, value) => {
console.log('New data key:', key);
});
// Listen for data removal
sprite.on('removedata', (gameObject, key, value) => {
console.log('Removed:', key, 'was', value);
});// HUD scene watches for score changes set by the Game scene
// In HUDScene.create():
this.registry.events.on('changedata-score', (game, value) => {
this.scoreText.setText('Score: ' + value);
});
this.events.once('shutdown', () => {
this.registry.events.off('changedata-score');
});
// In GameScene.update():
this.registry.set('score', this.score);// You can store any value type: numbers, strings, booleans, objects, arrays
sprite.setData('inventory', ['sword', 'shield']);
sprite.setData('stats', { str: 10, dex: 8, int: 12 });
// CAUTION: mutating a stored object/array does NOT trigger changedata
const inv = sprite.getData('inventory');
inv.push('potion');
// No event fired! The reference didn't change.
// To trigger the event, re-set the key:
sprite.setData('inventory', [...inv]); // new array reference triggers changedata// Merge defaults -- only sets keys that don't already exist
sprite.data.merge({ hp: 100, speed: 200, armor: 0 }, false);
// Merge and overwrite existing values
sprite.data.merge(savedState, true);// Find all keys matching a regex
this.data.set('enemy_1_hp', 50);
this.data.set('enemy_2_hp', 80);
this.data.set('player_hp', 100);
const enemyData = this.data.query(/^enemy_/);
// { enemy_1_hp: 50, enemy_2_hp: 80 }// Prevent all modifications (set, remove, inc, toggle all become no-ops)
sprite.data.freeze = true;
sprite.setData('hp', 0); // silently ignored
sprite.data.freeze = false;
sprite.setData('hp', 0); // works again
// Also available as a chainable method
sprite.data.setFreeze(true);// Save to localStorage
function saveGame(scene) {
const state = scene.data.getAll();
localStorage.setItem('saveData', JSON.stringify(state));
}
// Restore from localStorage
function loadGame(scene) {
const raw = localStorage.getItem('saveData');
if (raw) {
scene.data.merge(JSON.parse(raw), true);
}
}All data events are defined in Phaser.Data.Events. The emitter depends on context: for GameObjects it is the GameObject itself; for scene data it is scene.sys.events; for the registry it is registry.events.
| Constant | String | Fired When | Callback Args |
|---|---|---|---|
SET_DATA | 'setdata' | A new key is created | (parent, key, value) |
CHANGE_DATA | 'changedata' | An existing key's value changes | (parent, key, value, previousValue) |
CHANGE_DATA_KEY | 'changedata-' | Specific key changes (append key name) | (parent, value, previousValue) |
REMOVE_DATA | 'removedata' | A key is removed | (parent, key, value) |
DESTROY | 'destroy' | DataManager's parent is destroyed | (none) |
The parent argument is the owner of the DataManager (the GameObject, Scene, or Game instance).
Note: CHANGE_DATA_KEY is a prefix. The actual event string is 'changedata-' + the key name. For example, setting a key called score emits 'changedata-score'.
| Method | Returns | Description |
|---|---|---|
setDataEnabled() | this | Explicitly creates the DataManager (normally auto-created) |
setData(key, value) | this | Set one key or pass an object for multiple |
getData(key) | * | Get one value or pass an array for multiple |
incData(key, amount?) | this | Increment numeric value (default +1, negative to decrement) |
toggleData(key) | this | Toggle boolean value |
| Method | Returns | Description |
|---|---|---|
set(key, value) | this | Set single key or object of key-value pairs |
get(key) | * | Get value(s) -- string or array of strings |
getAll() | object | Shallow copy of all entries |
query(regex) | object | All entries with keys matching the RegExp |
each(cb, ctx, ...args) | this | Iterate all entries |
merge(data, overwrite?) | this | Bulk import; overwrite defaults to true |
remove(key) | this | Delete key(s) -- string or array |
pop(key) | * | Get and delete in one call |
has(key) | boolean | Check if key exists |
inc(key, amount?) | this | Increment (default +1) |
toggle(key) | this | Toggle boolean |
setFreeze(bool) | this | Freeze/unfreeze modifications |
reset() | this | Clear all data and unfreeze |
count | number | Read-only entry count |
freeze | boolean | Get/set frozen state |
values | object | Proxy object for direct property access |
get() vs values -- Copies vs Live ReferencesUnderstanding the difference between get() and values is critical for correct data updates:
// get() returns a copy for primitives -- modifying the local variable does NOT update the DataManager
let score = this.data.get('score');
score += 10; // local copy only, DataManager still has the old value
// values provides a live proxy -- assignment triggers CHANGE_DATA event
this.data.values.score += 10; // updates the DataManager AND emits changedata-score
// For objects, get() returns the stored reference (not a deep copy)
const stats = this.data.get('stats');
stats.hp -= 10; // mutates the stored object but does NOT trigger events
this.data.set('stats', { ...stats }); // re-set with new reference to trigger eventData events emit on different targets depending on where the DataManager lives:
| DataManager Owner | Events Emit On | Example Listener |
|---|---|---|
| GameObject | The GameObject itself | sprite.on('changedata-hp', ...) |
Scene (this.data) | Scene event bus (this.events) | this.events.on('changedata-score', ...) |
Registry (this.registry) | Registry's own emitter | this.registry.events.on('changedata-score', ...) |
The key-specific event 'changedata-{key}' fires only for that exact key, while the generic 'changedata' fires for every key change. Always prefer key-specific listeners for performance.
'gold' and 'Gold' are two different keys. Be consistent with naming conventions.
You must call set(key, value) to create a key before modifying it via data.values.key. Direct assignment to values for a brand-new key will NOT create the event proxy -- it creates a plain property that emits no events.
Mutating a stored object or array in place does not emit changedata because the reference has not changed. You must re-set the key with a new reference to trigger the event.
The registry lives on the Game object. Listeners added to this.registry.events are NOT cleaned up when a scene restarts. Always remove them on SHUTDOWN:
create() {
const handler = (game, value) => { this.updateHUD(value); };
this.registry.events.on('changedata-score', handler);
this.events.once('shutdown', () => {
this.registry.events.off('changedata-score', handler);
});
}When freeze is true, all write operations (set, remove, inc, toggle, pop, merge) silently do nothing. No error is thrown and no event is emitted. This can be confusing if you forget you froze the data.
The DataManagerPlugin removes its shutdown listener on shutdown but does NOT clear data on shutdown. Data persists if the scene restarts. It only fully resets on scene destroy. If you need a clean slate on restart, manually reset in a shutdown listener:
this.events.once('shutdown', () => {
this.data.reset();
});inc() on Non-Numeric Valuesinc() uses the + operator internally. On strings it concatenates rather than adds numerically. On booleans, they coerce to 0 or 1 before incrementing. Only use inc() on keys you know hold numbers.
reset() Emits No EventsCalling reset() clears all data silently -- no removedata events fire for the deleted keys. If you need removal events for each key, iterate and call remove() individually instead.
setFreeze(true) takes effect immediately. If you freeze mid-way through a series of set() calls, subsequent calls in the batch silently no-op. Always freeze only after all writes are complete.
getAll() Returns a SnapshotgetAll() returns a new plain object each time. It is a shallow copy -- primitive values are independent, but object/array values still share references with the DataManager's internal storage.
For the generic changedata event, the callback receives (parent, key, value, previousValue). For the key-specific changedata-{key} event, the key argument is omitted: (parent, value, previousValue). This difference is easy to miss.
| Path | Description |
|---|---|
src/data/DataManager.js | Core DataManager class -- set, get, each, merge, remove, query, freeze, events |
src/data/DataManagerPlugin.js | Scene plugin extending DataManager; registered as this.data |
src/data/events/index.js | Event constant exports (CHANGE_DATA, SET_DATA, REMOVE_DATA, CHANGE_DATA_KEY, DESTROY) |
src/data/events/SET_DATA_EVENT.js | 'setdata' -- emitted when a new key is created |
src/data/events/CHANGE_DATA_EVENT.js | 'changedata' -- emitted when an existing key's value changes |
src/data/events/CHANGE_DATA_KEY_EVENT.js | 'changedata-' -- per-key change event prefix |
src/data/events/REMOVE_DATA_EVENT.js | 'removedata' -- emitted when a key is removed |
src/data/events/DESTROY_EVENT.js | 'destroy' -- DataManager listens for this from its parent |
src/gameobjects/GameObject.js | setData, getData, incData, toggleData, setDataEnabled convenience methods |
src/core/Game.js | Creates game.registry -- the global DataManager instance |
src/scene/Scene.js | Exposes this.registry (injected from Game) and this.data (DataManagerPlugin) |
© autonomous-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in store/agents/phaser/skills/data-manager of autonomous-ai/openharness.
Open the folder on GitHubat commit 54a1f1b
Data Manager next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Data Manager this skillautonomous-ai/openharness | 1.1k | — | ~4.2k | Automated safety check: Pass | MIT | |
| Secrets Vault Manageralirezarezvani/claude-skills | 28k | 1 repos | ~3.6k | Automated safety check: Notes | MIT | |
| Secrets Managementdavila7/claude-code-templates | 32k | 11 repos | ~2k | Automated safety check: Pass | MIT | |
| Agent App Storeruvnet/ruflo | 74k | 3 repos | ~1k | Automated safety check: Pass | MIT | |
| Project ManagerRightNow-AI/openfang | 18k | — | ~960 | Automated safety check: Pass | Apache-2.0 | |
| Content Management Systemsgithub/awesome-copilot | 40k | 1 repos | ~1.3k | Automated safety check: Pass | MIT |
alirezarezvani/claude-skills
A skill your agent uses when the user asks to set up secret management infrastructure, integrate HashiCorp Vault, configure cloud secret stores (AWS Secrets Manager, Azure Key Vault, GCP Secret…
davila7/claude-code-templates
Secure secrets management practices for CI/CD pipelines using Vault, AWS Secrets Manager, and other tools.
ruvnet/ruflo
Agent skill for app-store - invoke with $agent-app-store. An agent skill from ruvnet/ruflo.
RightNow-AI/openfang
Project management expert for Agile, estimation, risk management, and stakeholder communication
github/awesome-copilot
Workflow for building and modifying content management systems across WordPress, Shopify, Wix, Squarespace, Drupal, WooCommerce, Joomla, HubSpot CMS Hub, Webflow, Adobe Experience Manager, and…
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store.
autonomous-ai/openharness
Slices 3D mesh files into printer-profiled plain G-code through real slicer CLIs, with backend discovery, input inspection, dry runs and static validation.
autonomous-ai/openharness
Turns a home-automation request into standard, testable automations.yaml, run against Home Assistant Core's real triggers and verified with its own trace tool.
autonomous-ai/openharness
Turns a musical brief into LilyPond concert-pitch music, checked parts for each instrument and a playable practice pack.
autonomous-ai/openharness
Turns an STL and explicit printer and material requirements into compared OrcaSlicer plans, an editable 3MF project, checked G-code and a portable handoff.
autonomous-ai/openharness
Builds an editable DOCX report, a formula-driven XLSX workbook and a fresh LibreOffice PDF preview from one structured source file, then checks them together.
autonomous-ai/openharness
Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain .gcode, using Bambu LAN FTPS/MQTT handoffs.
A skill your agent uses when using the Phaser 4 DataManager to store custom key-value data on game objects, listen for data change events, or manage game state. Data Manager is an agent skill from autonomous-ai/openharness. Use this skill when using the Phaser 4 DataManager to store custom key-value data on game objects, listen for data change events, or manage game state.
Data Manager fits situations like: using the Phaser 4 DataManager to store custom key-value data on game objects; listen for data change events; manage game state; custom data storage.
Run `npx skills add autonomous-ai/openharness --skill data-manager -a claude-code`. Or copy the skill folder (store/agents/phaser/skills/data-manager in autonomous-ai/openharness) into .claude/skills/data-manager in your project. Claude Code loads it when a task matches its description.
Run `npx skills add autonomous-ai/openharness --skill data-manager -a codex`. Or copy the skill folder (store/agents/phaser/skills/data-manager in autonomous-ai/openharness) into .agents/skills/data-manager in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add autonomous-ai/openharness --skill data-manager -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/data-manager, .gemini/skills/data-manager, .github/skills/data-manager and .opencode/skills/data-manager in your project.
Going by SKILL.md and its folder, Data Manager needs credentials named CHANGE_DATA_KEY. Our summary lists: A credential in CHANGE_DATA_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Data Manager is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Data Manager: Secrets Vault Manager (alirezarezvani/claude-skills, 28k stars), Secrets Management (davila7/claude-code-templates, 32k stars), Agent App Store (ruvnet/ruflo, 74k stars) and Project Manager (RightNow-AI/openfang, 18k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
autonomous-ai (a GitHub organization) maintains it in autonomous-ai/openharness, which has 1,137 GitHub stars. The repository holds 99 skills in this directory. The repository was last updated on October 7, 2026.
Source: autonomous-ai/openharness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.