apps folders add adds the folder (template note, refusals with reasons); MCP: .mcp.json never spawns a missing plugin path (sh fallback to PATH, npx), mcp/serve skip the self-update, spawned handshake test; store build minimums in one dated table: Play target API 36 and App Store Xcode 26 / SDK 26 blocked in scan, validate, play upload/release, apple upload; pitfalls 81-83
This commit is contained in:
parent
9805582278
commit
9ab64bcbdf
16 changed files with 323 additions and 14 deletions
|
|
@ -40,6 +40,10 @@ const json = (o: unknown) => JSON.stringify(o, null, 2) + '\n';
|
|||
const short = (d: string) => d.split(' - ')[0]!.split('. Use when')[0]!.replace(/\.$/, '');
|
||||
|
||||
/** Every generated file: path -> content. Pure apart from reading the sources. */
|
||||
/** The plugin's MCP start: the plugin's launcher, else storebound on PATH, else the npm package. */
|
||||
export const MCP_LAUNCH = 'r="${CLAUDE_PLUGIN_ROOT:-}"; if [ -n "$r" ] && [ -x "$r/bin/storebound" ]; then exec "$r/bin/storebound" mcp; fi; '
|
||||
+ 'if command -v storebound >/dev/null 2>&1; then exec storebound mcp; fi; exec npx -y storebound@latest mcp';
|
||||
|
||||
export function generate(root: string): Map<string, string> {
|
||||
const pkg = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8')) as { version: string; description: string; license: string; keywords: string[] };
|
||||
const core = readFileSync(join(root, 'docs', 'agents-core.md'), 'utf8').trim();
|
||||
|
|
@ -53,7 +57,9 @@ export function generate(root: string): Map<string, string> {
|
|||
|
||||
// 1. Claude Code plugin + its MCP server + marketplace
|
||||
out.set('.claude-plugin/plugin.json', json({ name: 'storebound', version: pkg.version, description, author: { name: 'CRTkafa' }, homepage, repository, license: pkg.license, keywords }));
|
||||
out.set('.mcp.json', json({ mcpServers: { storebound: { command: '${CLAUDE_PLUGIN_ROOT}/bin/storebound', args: ['mcp'] } } }));
|
||||
// through sh, never a direct path: a plugin root that is gone (an old cache folder after an update, or the repo opened
|
||||
// as a project where CLAUDE_PLUGIN_ROOT is unset) made the client's spawn fail with ENOENT (pitfall: MCP spawn ENOENT)
|
||||
out.set('.mcp.json', json({ mcpServers: { storebound: { command: 'sh', args: ['-c', MCP_LAUNCH] } } }));
|
||||
out.set('.claude-plugin/marketplace.json', json({ name: 'crtkafa', description: 'CRTkafa\'s open-sourced tools.', owner: { name: 'CRTkafa' },
|
||||
plugins: [{ name: 'storebound', source: '.', description: 'Take a mobile app or game from nothing to Submit for review on both stores: skills for every store step and questionnaire plus the storebound CLI and MCP server.',
|
||||
version: pkg.version, category: 'development', tags: ['mobile', 'google-play', 'app-store', 'release'] }] }));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue