@famgia/omnify-ai-guides 2.0.15
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/README.md +105 -0
- package/dist/chunk-RCTEXK7C.js +549 -0
- package/dist/chunk-RCTEXK7C.js.map +1 -0
- package/dist/config/rules.yaml +524 -0
- package/dist/index.cjs +587 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +55 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/agents/architect.md.stub +150 -0
- package/dist/knowledge/agents/developer.md.stub +190 -0
- package/dist/knowledge/agents/reviewer.md.stub +134 -0
- package/dist/knowledge/agents/tester.md.stub +196 -0
- package/dist/knowledge/checklists/backend.md.stub +112 -0
- package/dist/knowledge/checklists/react.md.stub +108 -0
- package/dist/knowledge/claude-rules/laravel-controllers.md.stub +57 -0
- package/dist/knowledge/claude-rules/laravel-migrations.md.stub +47 -0
- package/dist/knowledge/claude-rules/laravel-tests.md.stub +52 -0
- package/dist/knowledge/claude-rules/naming.md.stub +369 -0
- package/dist/knowledge/claude-rules/performance.md.stub +256 -0
- package/dist/knowledge/claude-rules/php-standards.md.stub +305 -0
- package/dist/knowledge/claude-rules/react-components.md.stub +67 -0
- package/dist/knowledge/claude-rules/schema-yaml.md.stub +83 -0
- package/dist/knowledge/claude-rules/security.md.stub +164 -0
- package/dist/knowledge/cursor-rules/antd-deprecations.mdc.stub +62 -0
- package/dist/knowledge/cursor-rules/basemodel-readonly.mdc.stub +66 -0
- package/dist/knowledge/cursor-rules/baserequest-readonly.mdc.stub +74 -0
- package/dist/knowledge/cursor-rules/baseresource-readonly.mdc.stub +78 -0
- package/dist/knowledge/cursor-rules/laravel-controller.mdc.stub +421 -0
- package/dist/knowledge/cursor-rules/laravel-request.mdc.stub +112 -0
- package/dist/knowledge/cursor-rules/laravel-resource.mdc.stub +73 -0
- package/dist/knowledge/cursor-rules/laravel-review.mdc.stub +69 -0
- package/dist/knowledge/cursor-rules/laravel-testing.mdc.stub +138 -0
- package/dist/knowledge/cursor-rules/laravel.mdc.stub +138 -0
- package/dist/knowledge/cursor-rules/migrations-workflow.mdc.stub +224 -0
- package/dist/knowledge/cursor-rules/model-editable.mdc.stub +120 -0
- package/dist/knowledge/cursor-rules/omnify-migrations.mdc.stub +109 -0
- package/dist/knowledge/cursor-rules/omnify-schema.mdc.stub +358 -0
- package/dist/knowledge/cursor-rules/omnify.mdc.stub +58 -0
- package/dist/knowledge/cursor-rules/react-design.mdc.stub +693 -0
- package/dist/knowledge/cursor-rules/react-form.mdc.stub +292 -0
- package/dist/knowledge/cursor-rules/react-services.mdc.stub +304 -0
- package/dist/knowledge/cursor-rules/react.mdc.stub +336 -0
- package/dist/knowledge/cursor-rules/request-editable.mdc.stub +111 -0
- package/dist/knowledge/cursor-rules/resource-editable.mdc.stub +125 -0
- package/dist/knowledge/cursor-rules/schema-create.mdc.stub +440 -0
- package/dist/knowledge/cursor-rules/validation-rules.mdc.stub +181 -0
- package/dist/knowledge/laravel/README.md.stub +59 -0
- package/dist/knowledge/laravel/architecture.md.stub +424 -0
- package/dist/knowledge/laravel/authentication.md.stub +588 -0
- package/dist/knowledge/laravel/controller.md.stub +484 -0
- package/dist/knowledge/laravel/datetime.md.stub +334 -0
- package/dist/knowledge/laravel/migrations-team.md.stub +376 -0
- package/dist/knowledge/laravel/openapi.md.stub +449 -0
- package/dist/knowledge/laravel/request.md.stub +450 -0
- package/dist/knowledge/laravel/resource.md.stub +516 -0
- package/dist/knowledge/laravel/service.md.stub +503 -0
- package/dist/knowledge/laravel/testing.md.stub +1504 -0
- package/dist/knowledge/omnify/antdesign-guide.md.stub +401 -0
- package/dist/knowledge/omnify/config-guide.md.stub +405 -0
- package/dist/knowledge/omnify/japan-guide.md.stub +186 -0
- package/dist/knowledge/omnify/laravel-guide.md.stub +61 -0
- package/dist/knowledge/omnify/partial-schema-guide.md.stub +353 -0
- package/dist/knowledge/omnify/react-form-guide.md.stub +225 -0
- package/dist/knowledge/omnify/schema-guide.md.stub +144 -0
- package/dist/knowledge/omnify/typescript-guide.md.stub +337 -0
- package/dist/knowledge/react/README.md.stub +221 -0
- package/dist/knowledge/react/antd-guide.md +528 -0
- package/dist/knowledge/react/antd-guide.md.stub +528 -0
- package/dist/knowledge/react/checklist.md.stub +108 -0
- package/dist/knowledge/react/datetime-guide.md.stub +137 -0
- package/dist/knowledge/react/design-philosophy.md.stub +363 -0
- package/dist/knowledge/react/i18n-guide.md.stub +211 -0
- package/dist/knowledge/react/laravel-integration.md.stub +181 -0
- package/dist/knowledge/react/service-pattern.md.stub +180 -0
- package/dist/knowledge/react/tanstack-query.md.stub +339 -0
- package/dist/knowledge/react/types-guide.md +669 -0
- package/dist/knowledge/react/types-guide.md.stub +669 -0
- package/dist/knowledge/workflows/bug-fix.md.stub +201 -0
- package/dist/knowledge/workflows/code-review.md.stub +164 -0
- package/dist/knowledge/workflows/new-feature.md.stub +327 -0
- package/dist/plugin-M95GyBll.d.cts +191 -0
- package/dist/plugin-M95GyBll.d.ts +191 -0
- package/dist/plugin.cjs +573 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.d.cts +2 -0
- package/dist/plugin.d.ts +2 -0
- package/dist/plugin.js +15 -0
- package/dist/plugin.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts","../src/generator.ts","../src/adapters/cursor.ts","../src/adapters/claude.ts","../src/adapters/antigravity.ts","../src/adapters/index.ts"],"sourcesContent":["/**\n * AI Guides Plugin for Omnify\n *\n * Generates AI guides for Cursor, Claude, and Antigravity\n */\n\nimport { readFileSync } from 'node:fs';\nimport type { OmnifyPlugin, GeneratorContext, GeneratorOutput } from '@famgia/omnify-types';\nimport { generateAIGuides, getAvailableCategories } from './generator.js';\nimport type { GuideCategory } from './adapters/types.js';\n\n/**\n * Gets the plugin version from package.json\n */\nfunction getPluginVersion(): string {\n try {\n const pkgPath = new URL('../package.json', import.meta.url);\n const pkgContent = readFileSync(pkgPath, 'utf-8');\n const pkg = JSON.parse(pkgContent) as { version: string };\n return pkg.version;\n } catch {\n return '0.0.0';\n }\n}\n\n/**\n * AI Guides plugin options\n */\nexport interface AIGuidesPluginOptions {\n /**\n * Categories to generate\n * @default ['omnify', 'laravel', 'react'] (all)\n */\n categories?: GuideCategory[];\n\n /**\n * Base path for Laravel files\n * @default 'app'\n */\n laravelBasePath?: string;\n\n /**\n * Base path for TypeScript/React files\n * @default 'resources/ts'\n */\n typescriptBasePath?: string;\n\n /**\n * Adapters to use\n * @default ['cursor', 'claude', 'antigravity'] (all)\n */\n adapters?: ('cursor' | 'claude' | 'antigravity')[];\n}\n\n/**\n * Create AI Guides plugin\n */\nexport default function aiGuidesPlugin(options: AIGuidesPluginOptions = {}): OmnifyPlugin {\n const resolvedOptions = {\n categories: options.categories ?? getAvailableCategories(),\n laravelBasePath: options.laravelBasePath ?? 'app',\n typescriptBasePath: options.typescriptBasePath ?? 'resources/ts',\n adapters: options.adapters,\n };\n\n return {\n name: '@famgia/omnify-ai-guides',\n version: getPluginVersion(),\n\n generators: [\n {\n name: 'ai-guides',\n description: 'Generate AI assistant guides (Cursor, Claude, Antigravity)',\n\n generate: async (ctx: GeneratorContext): Promise<GeneratorOutput[]> => {\n const result = generateAIGuides(ctx.cwd, {\n categories: resolvedOptions.categories,\n adapters: resolvedOptions.adapters,\n placeholders: {\n LARAVEL_BASE: resolvedOptions.laravelBasePath,\n LARAVEL_ROOT: '',\n TYPESCRIPT_BASE: resolvedOptions.typescriptBasePath,\n },\n });\n\n // Log summary\n const claudeCount = result.counts['claude'] || 0;\n const cursorCount = result.counts['cursor'] || 0;\n const antigravityCount = result.counts['antigravity'] || 0;\n\n const parts: string[] = [];\n if (claudeCount > 0) parts.push(`${claudeCount} Claude`);\n if (cursorCount > 0) parts.push(`${cursorCount} Cursor`);\n if (antigravityCount > 0) parts.push(`${antigravityCount} Antigravity`);\n\n ctx.logger.info(`Generated ${parts.join(', ')} files`);\n\n if (result.errors?.length) {\n for (const error of result.errors) {\n ctx.logger.warn(error);\n }\n }\n\n // Return empty outputs (files are written directly)\n return [];\n },\n },\n ],\n };\n}\n\nexport { generateAIGuides, shouldGenerateAIGuides, getAvailableAdapters, getAvailableCategories } from './generator.js';\nexport type { AIGuidesOptions, AIGuidesResult, GuideCategory } from './adapters/types.js';\n","/**\n * AI Guides Generator\n *\n * Generates AI guides from knowledge base with category filtering\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync, readdirSync } from 'node:fs';\nimport { resolve, dirname, join, basename } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { parse as parseYaml } from 'yaml';\nimport { getAdapters } from './adapters/index.js';\nimport type { AIGuidesResult, AIGuidesOptions, RulesConfig, GuideCategory } from './adapters/types.js';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = dirname(__filename);\n\n/**\n * Get knowledge directory path\n */\nfunction getKnowledgeDir(): string {\n const possiblePaths = [\n // Dev: running in src\n resolve(__dirname, 'knowledge'),\n // Dist: running from dist/\n resolve(__dirname, '../knowledge'),\n // Installed package: in node_modules\n resolve(__dirname, '../../knowledge'),\n ];\n\n for (const path of possiblePaths) {\n if (existsSync(path)) {\n return path;\n }\n }\n\n throw new Error(`AI guides knowledge directory not found. Tried: ${possiblePaths.join(', ')}`);\n}\n\n/**\n * Get config directory path\n */\nfunction getConfigDir(): string {\n const possiblePaths = [\n // Dev: running in src\n resolve(__dirname, 'config'),\n // Dist: running from dist/\n resolve(__dirname, '../config'),\n // Installed package: in node_modules\n resolve(__dirname, '../../config'),\n ];\n\n for (const path of possiblePaths) {\n if (existsSync(path)) {\n return path;\n }\n }\n\n throw new Error(`AI guides config directory not found. Tried: ${possiblePaths.join(', ')}`);\n}\n\n/**\n * Load rules config\n */\nfunction loadRulesConfig(): RulesConfig {\n const configDir = getConfigDir();\n const rulesPath = join(configDir, 'rules.yaml');\n\n if (!existsSync(rulesPath)) {\n throw new Error(`Rules config not found: ${rulesPath}`);\n }\n\n const content = readFileSync(rulesPath, 'utf-8');\n return parseYaml(content) as RulesConfig;\n}\n\n/**\n * Load knowledge file\n */\nfunction loadKnowledgeFile(source: string): string {\n const knowledgeDir = getKnowledgeDir();\n const filePath = join(knowledgeDir, source);\n\n if (!existsSync(filePath)) {\n throw new Error(`Knowledge file not found: ${filePath}`);\n }\n\n return readFileSync(filePath, 'utf-8');\n}\n\n/**\n * Replace placeholders in content\n */\nfunction replacePlaceholders(content: string, placeholders: Record<string, string>): string {\n let result = content;\n for (const [key, value] of Object.entries(placeholders)) {\n result = result.replace(new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, 'g'), value);\n }\n return result;\n}\n\n/**\n * Write file (auto-create directory)\n */\nfunction writeOutputFile(filePath: string, content: string, dryRun: boolean): void {\n if (dryRun) {\n console.log(`[DRY RUN] Would write: ${filePath}`);\n return;\n }\n\n const dir = dirname(filePath);\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n\n writeFileSync(filePath, content);\n}\n\n/**\n * Check if a rule matches the specified categories\n */\nfunction matchesCategory(ruleCategory: string, categories?: GuideCategory[]): boolean {\n if (!categories || categories.length === 0) {\n return true; // No filter = all categories\n }\n\n // Extract category from rule.category (e.g., \"guides/laravel\" -> \"laravel\")\n const parts = ruleCategory.split('/');\n const category = parts[parts.length - 1] as GuideCategory;\n\n return categories.includes(category);\n}\n\n/**\n * Check if a source file matches the specified categories\n */\nfunction sourceMatchesCategory(source: string, categories?: GuideCategory[]): boolean {\n if (!categories || categories.length === 0) {\n return true; // No filter = all categories\n }\n\n // Extract category from source path (e.g., \"cursor-rules/laravel.mdc.stub\" -> \"laravel\")\n const filename = basename(source).toLowerCase();\n\n for (const category of categories) {\n if (filename.startsWith(category)) {\n return true;\n }\n // Also check folder name\n if (source.includes(`/${category}/`) || source.startsWith(`${category}/`)) {\n return true;\n }\n }\n\n // Special handling for react-* files\n if (categories.includes('react')) {\n if (filename.startsWith('react') || filename.includes('antd')) {\n return true;\n }\n }\n\n // Special handling for omnify/schema files\n if (categories.includes('omnify')) {\n if (\n filename.startsWith('omnify') ||\n filename.startsWith('schema') ||\n filename.startsWith('validation') ||\n filename.includes('migration')\n ) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Generate AI Guides\n */\nexport function generateAIGuides(rootDir: string, options: AIGuidesOptions = {}): AIGuidesResult {\n const config = loadRulesConfig();\n const adapters = getAdapters(options.adapters);\n const dryRun = options.dryRun ?? false;\n const categories = options.categories;\n\n // Merge placeholders\n const placeholders = {\n ...config.placeholders,\n ...options.placeholders,\n };\n\n const result: AIGuidesResult = {\n counts: {},\n files: [],\n };\n\n // Initialize adapter counts\n for (const adapter of adapters) {\n result.counts[adapter.name] = 0;\n }\n\n // Process guides with category filter\n for (const rule of config.guides) {\n // Skip if doesn't match category filter\n if (!matchesCategory(rule.category, categories)) {\n continue;\n }\n\n try {\n const content = loadKnowledgeFile(rule.source);\n\n for (const adapter of adapters) {\n if (!adapter.isEnabled(rule)) {\n continue;\n }\n\n const transformed = adapter.transform(content, rule, placeholders);\n const outputPath = adapter.getOutputPath(rule);\n const fullPath = resolve(rootDir, adapter.outputDir, outputPath);\n\n writeOutputFile(fullPath, transformed, dryRun);\n result.files.push(fullPath);\n result.counts[adapter.name] = (result.counts[adapter.name] ?? 0) + 1;\n }\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n result.errors = result.errors ?? [];\n result.errors.push(`Error processing ${rule.id}: ${message}`);\n }\n }\n\n // Process Cursor Rules (direct copy with frontmatter)\n const cursorAdapter = adapters.find((a) => a.name === 'cursor');\n if (cursorAdapter && config.cursorRules) {\n for (const rule of config.cursorRules) {\n // Skip if doesn't match category filter\n if (!sourceMatchesCategory(rule.source, categories)) {\n continue;\n }\n\n try {\n const content = loadKnowledgeFile(rule.source);\n const transformed = replacePlaceholders(content, placeholders);\n const filename = basename(rule.source).replace('.mdc.stub', '.mdc').replace('.md.stub', '.md');\n const fullPath = resolve(rootDir, cursorAdapter.outputDir, filename);\n\n writeOutputFile(fullPath, transformed, dryRun);\n result.files.push(fullPath);\n result.counts[cursorAdapter.name] = (result.counts[cursorAdapter.name] ?? 0) + 1;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n result.errors = result.errors ?? [];\n result.errors.push(`Error processing cursor rule ${rule.source}: ${message}`);\n }\n }\n }\n\n // Process Claude Rules (strip frontmatter)\n const claudeAdapter = adapters.find((a) => a.name === 'claude');\n if (claudeAdapter && config.claudeRules) {\n for (const rule of config.claudeRules) {\n // Skip if doesn't match category filter\n if (!sourceMatchesCategory(rule.source, categories)) {\n continue;\n }\n\n try {\n const content = loadKnowledgeFile(rule.source);\n const strippedContent = stripFrontmatter(content);\n const transformed = replacePlaceholders(strippedContent, placeholders);\n const filename = basename(rule.source)\n .replace('.mdc.stub', '.mdc')\n .replace('.md.stub', '.md')\n .replace('.mdc', '.md');\n const fullPath = resolve(rootDir, '.claude/rules/omnify', filename);\n\n writeOutputFile(fullPath, transformed, dryRun);\n result.files.push(fullPath);\n result.counts[claudeAdapter.name] = (result.counts[claudeAdapter.name] ?? 0) + 1;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n result.errors = result.errors ?? [];\n result.errors.push(`Error processing claude rule ${rule.source}: ${message}`);\n }\n }\n }\n\n // Process Antigravity Rules\n const antigravityAdapterInstance = adapters.find((a) => a.name === 'antigravity');\n if (antigravityAdapterInstance && config.antigravityRules) {\n for (const rule of config.antigravityRules) {\n // Skip if doesn't match category filter\n if (!sourceMatchesCategory(rule.source, categories)) {\n continue;\n }\n\n try {\n const content = loadKnowledgeFile(rule.source);\n const transformed = transformForAntigravity(content, rule, placeholders);\n const filename = basename(rule.source)\n .replace('.mdc.stub', '.mdc')\n .replace('.md.stub', '.md')\n .replace('.mdc', '.md');\n const fullPath = resolve(rootDir, antigravityAdapterInstance.outputDir, filename);\n\n writeOutputFile(fullPath, transformed, dryRun);\n result.files.push(fullPath);\n result.counts[antigravityAdapterInstance.name] = (result.counts[antigravityAdapterInstance.name] ?? 0) + 1;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n result.errors = result.errors ?? [];\n result.errors.push(`Error processing antigravity rule ${rule.source}: ${message}`);\n }\n }\n }\n\n return result;\n}\n\n/**\n * Transform for Antigravity format\n */\nfunction transformForAntigravity(\n content: string,\n rule: { source: string; priority?: string; tags?: string[] },\n placeholders: Record<string, string>\n): string {\n let transformed = replacePlaceholders(content, placeholders);\n\n if (transformed.startsWith('---')) {\n const endIndex = transformed.indexOf('---', 3);\n if (endIndex !== -1) {\n const existingFrontmatter = transformed.substring(3, endIndex).trim();\n const bodyContent = transformed.substring(endIndex + 3).trim();\n\n const id = basename(rule.source)\n .replace('.mdc.stub', '')\n .replace('.md.stub', '')\n .replace('.mdc', '')\n .replace('.md', '');\n const description = extractYamlValue(existingFrontmatter, 'description') || id;\n const globs = extractYamlArray(existingFrontmatter, 'globs');\n const priority = rule.priority || 'medium';\n const tags = rule.tags || [];\n\n const lines: string[] = [`id: ${id}`, `description: \"${description}\"`, `priority: ${priority}`];\n\n if (globs.length > 0) {\n lines.push('globs:');\n for (const glob of globs) {\n lines.push(` - \"${glob}\"`);\n }\n }\n\n if (tags.length > 0) {\n lines.push('tags:');\n for (const tag of tags) {\n lines.push(` - ${tag}`);\n }\n }\n\n return `---\\n${lines.join('\\n')}\\n---\\n\\n${bodyContent}`;\n }\n }\n\n return transformed;\n}\n\n/**\n * Extract YAML value\n */\nfunction extractYamlValue(yaml: string, key: string): string | undefined {\n const match = yaml.match(new RegExp(`${key}:\\\\s*[\"']?([^\"'\\\\n]+)[\"']?`));\n return match?.[1]?.trim();\n}\n\n/**\n * Extract YAML array\n */\nfunction extractYamlArray(yaml: string, key: string): string[] {\n const match = yaml.match(new RegExp(`${key}:\\\\s*\\\\[([^\\\\]]+)\\\\]`));\n if (match?.[1]) {\n return match[1].split(',').map((g) => g.trim().replace(/[\"']/g, ''));\n }\n return [];\n}\n\n/**\n * Strip frontmatter (for Claude Code)\n */\nfunction stripFrontmatter(content: string): string {\n if (!content.startsWith('---')) {\n return content;\n }\n\n const endIndex = content.indexOf('---', 3);\n if (endIndex === -1) {\n return content;\n }\n\n return content.substring(endIndex + 3).trim();\n}\n\n/**\n * Check if AI guides need to be generated\n */\nexport function shouldGenerateAIGuides(rootDir: string): boolean {\n const claudeDir = resolve(rootDir, '.claude/omnify/guides');\n const cursorDir = resolve(rootDir, '.cursor/rules/omnify');\n\n if (!existsSync(claudeDir) || !existsSync(cursorDir)) {\n return true;\n }\n\n try {\n const claudeFiles = readdirSync(claudeDir, { recursive: true });\n const cursorFiles = readdirSync(cursorDir);\n\n return claudeFiles.length === 0 || cursorFiles.length === 0;\n } catch {\n return true;\n }\n}\n\n/**\n * Get available adapter names\n */\nexport function getAvailableAdapters(): string[] {\n return getAdapters().map((a) => a.name);\n}\n\n/**\n * Get available categories\n */\nexport function getAvailableCategories(): GuideCategory[] {\n return ['omnify', 'laravel', 'react'];\n}\n","/**\n * Cursor AI Adapter\n *\n * Generates .mdc rule files with frontmatter for Cursor editor\n */\n\nimport type { AIAdapter, GuideRule, CursorTargetConfig } from './types.js';\n\n/**\n * Replace placeholders in content\n */\nfunction replacePlaceholders(content: string, placeholders: Record<string, string>): string {\n let result = content;\n for (const [key, value] of Object.entries(placeholders)) {\n result = result.replace(new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, 'g'), value);\n }\n return result;\n}\n\n/**\n * Cursor adapter\n */\nexport const cursorAdapter: AIAdapter = {\n name: 'cursor',\n outputDir: '.cursor/rules/omnify',\n\n transform(content: string, rule: GuideRule, placeholders: Record<string, string>): string {\n const target = rule.targets.cursor as CursorTargetConfig | undefined;\n\n // Replace placeholders in content\n let transformedContent = replacePlaceholders(content, placeholders);\n\n // If already has frontmatter, return as-is (cursor-rules/)\n if (transformedContent.startsWith('---')) {\n return transformedContent;\n }\n\n // Add frontmatter\n const description = target?.description || '';\n const globs = target?.globs || [];\n const alwaysApply = target?.alwaysApply ?? false;\n\n const frontmatter = `---\ndescription: \"${description}\"\nglobs: ${JSON.stringify(globs)}\nalwaysApply: ${alwaysApply}\n---\n\n`;\n\n return frontmatter + transformedContent;\n },\n\n getFilename(rule: GuideRule): string {\n const target = rule.targets.cursor as CursorTargetConfig | undefined;\n if (target?.filename) {\n return target.filename;\n }\n return `${rule.id}.mdc`;\n },\n\n isEnabled(rule: GuideRule): boolean {\n const target = rule.targets.cursor;\n return target?.enabled ?? false;\n },\n\n getOutputPath(rule: GuideRule): string {\n const filename = this.getFilename(rule);\n // Cursor uses flat structure (ignores category)\n return filename;\n },\n};\n\nexport default cursorAdapter;\n","/**\n * Claude AI Adapter\n *\n * Generates .md guide files for Claude Code\n */\n\nimport type { AIAdapter, GuideRule, ClaudeTargetConfig } from './types.js';\n\n/**\n * Replace placeholders in content\n */\nfunction replacePlaceholders(content: string, placeholders: Record<string, string>): string {\n let result = content;\n for (const [key, value] of Object.entries(placeholders)) {\n result = result.replace(new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, 'g'), value);\n }\n return result;\n}\n\n/**\n * Claude adapter\n */\nexport const claudeAdapter: AIAdapter = {\n name: 'claude',\n outputDir: '.claude/omnify',\n\n transform(content: string, _rule: GuideRule, placeholders: Record<string, string>): string {\n // Claude uses plain markdown, just replace placeholders\n return replacePlaceholders(content, placeholders);\n },\n\n getFilename(rule: GuideRule): string {\n const target = rule.targets.claude as ClaudeTargetConfig | undefined;\n if (target?.filename) {\n return target.filename;\n }\n return `${rule.id}.md`;\n },\n\n isEnabled(rule: GuideRule): boolean {\n const target = rule.targets.claude;\n return target?.enabled ?? false;\n },\n\n getOutputPath(rule: GuideRule): string {\n const target = rule.targets.claude as ClaudeTargetConfig | undefined;\n const filename = this.getFilename(rule);\n const subdir = target?.subdir || rule.category;\n\n if (subdir) {\n return `${subdir}/${filename}`;\n }\n return filename;\n },\n};\n\nexport default claudeAdapter;\n","/**\n * Antigravity AI Adapter\n *\n * Generates .md rule files with YAML frontmatter for Antigravity AI\n */\n\nimport type { AIAdapter, GuideRule, AITargetConfig } from './types.js';\n\n/**\n * Antigravity-specific target config\n */\nexport interface AntigravityTargetConfig extends AITargetConfig {\n /** Description */\n description?: string;\n /** Glob patterns */\n globs?: string[];\n /** Priority (high, medium, low) */\n priority?: 'high' | 'medium' | 'low';\n /** Tags */\n tags?: string[];\n}\n\n/**\n * Replace placeholders in content\n */\nfunction replacePlaceholders(content: string, placeholders: Record<string, string>): string {\n let result = content;\n for (const [key, value] of Object.entries(placeholders)) {\n result = result.replace(new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, 'g'), value);\n }\n return result;\n}\n\n/**\n * Antigravity adapter\n * Official docs: https://antigravity.im/documentation\n * Rules location: .agent/rules/\n */\nexport const antigravityAdapter: AIAdapter = {\n name: 'antigravity',\n outputDir: '.agent/rules/omnify',\n\n transform(content: string, rule: GuideRule, placeholders: Record<string, string>): string {\n const target = rule.targets.antigravity as AntigravityTargetConfig | undefined;\n\n // Replace placeholders in content\n let transformedContent = replacePlaceholders(content, placeholders);\n\n // If already has frontmatter, convert it\n if (transformedContent.startsWith('---')) {\n const endIndex = transformedContent.indexOf('---', 3);\n if (endIndex !== -1) {\n const existingFrontmatter = transformedContent.substring(3, endIndex).trim();\n const bodyContent = transformedContent.substring(endIndex + 3).trim();\n\n const antigravityFrontmatter = buildAntigravityFrontmatter(rule, target, existingFrontmatter);\n return `---\\n${antigravityFrontmatter}---\\n\\n${bodyContent}`;\n }\n }\n\n // Add frontmatter\n const frontmatter = buildAntigravityFrontmatter(rule, target);\n return `---\\n${frontmatter}---\\n\\n${transformedContent}`;\n },\n\n getFilename(rule: GuideRule): string {\n const target = rule.targets.antigravity as AntigravityTargetConfig | undefined;\n if (target?.filename) {\n return target.filename;\n }\n return `${rule.id}.md`;\n },\n\n isEnabled(rule: GuideRule): boolean {\n const target = rule.targets.antigravity;\n return target?.enabled ?? false;\n },\n\n getOutputPath(rule: GuideRule): string {\n const filename = this.getFilename(rule);\n // Antigravity uses flat structure (ignores category)\n return filename;\n },\n};\n\n/**\n * Build Antigravity-format frontmatter\n */\nfunction buildAntigravityFrontmatter(\n rule: GuideRule,\n target?: AntigravityTargetConfig,\n existingFrontmatter?: string\n): string {\n const lines: string[] = [];\n\n // ID\n lines.push(`id: ${rule.id}`);\n\n // Description\n const description = target?.description || extractDescription(existingFrontmatter) || rule.id;\n lines.push(`description: \"${description}\"`);\n\n // Priority\n const priority = target?.priority || 'medium';\n lines.push(`priority: ${priority}`);\n\n // Globs\n const globs = target?.globs || extractGlobs(existingFrontmatter) || [];\n if (globs.length > 0) {\n lines.push(`globs:`);\n for (const glob of globs) {\n lines.push(` - \"${glob}\"`);\n }\n }\n\n // Tags\n const tags = target?.tags || inferTags(rule);\n if (tags.length > 0) {\n lines.push(`tags:`);\n for (const tag of tags) {\n lines.push(` - ${tag}`);\n }\n }\n\n return lines.join('\\n') + '\\n';\n}\n\n/**\n * Extract description from existing frontmatter\n */\nfunction extractDescription(frontmatter?: string): string | undefined {\n if (!frontmatter) return undefined;\n const match = frontmatter.match(/description:\\s*[\"']?([^\"'\\n]+)[\"']?/);\n return match?.[1];\n}\n\n/**\n * Extract globs from existing frontmatter\n */\nfunction extractGlobs(frontmatter?: string): string[] {\n if (!frontmatter) return [];\n const match = frontmatter.match(/globs:\\s*\\[([^\\]]+)\\]/);\n if (match?.[1]) {\n return match[1].split(',').map((g) => g.trim().replace(/[\"']/g, ''));\n }\n return [];\n}\n\n/**\n * Infer tags from rule\n */\nfunction inferTags(rule: GuideRule): string[] {\n const tags: string[] = [];\n\n // Generate tags from category\n if (rule.category) {\n const parts = rule.category.split('/');\n tags.push(...parts.filter((p) => p !== 'guides'));\n }\n\n // Generate tags from ID\n if (rule.id.includes('laravel')) tags.push('laravel');\n if (rule.id.includes('react')) tags.push('react');\n if (rule.id.includes('schema')) tags.push('schema');\n if (rule.id.includes('omnify')) tags.push('omnify');\n\n // Remove duplicates\n return [...new Set(tags)];\n}\n\nexport default antigravityAdapter;\n","/**\n * AI Adapters\n *\n * Export all AI model adapters\n */\n\nexport * from './types.js';\nexport { cursorAdapter } from './cursor.js';\nexport { claudeAdapter } from './claude.js';\nexport { antigravityAdapter, type AntigravityTargetConfig } from './antigravity.js';\n\nimport { cursorAdapter } from './cursor.js';\nimport { claudeAdapter } from './claude.js';\nimport { antigravityAdapter } from './antigravity.js';\nimport type { AIAdapter } from './types.js';\n\n/**\n * All available adapters\n */\nexport const allAdapters: AIAdapter[] = [cursorAdapter, claudeAdapter, antigravityAdapter];\n\n/**\n * Get adapter by name\n */\nexport function getAdapter(name: string): AIAdapter | undefined {\n return allAdapters.find((a) => a.name === name);\n}\n\n/**\n * Get adapters by names\n */\nexport function getAdapters(names?: string[]): AIAdapter[] {\n if (!names || names.length === 0) {\n return allAdapters;\n }\n return allAdapters.filter((a) => names.includes(a.name));\n}\n"],"mappings":"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","names":["readFileSync","replacePlaceholders","replacePlaceholders","replacePlaceholders","cursorAdapter","claudeAdapter","readFileSync"]}
|
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
# AI Guides Configuration
|
|
2
|
+
# 各ガイドのメタデータとAIターゲット別の設定
|
|
3
|
+
|
|
4
|
+
version: "1.0"
|
|
5
|
+
|
|
6
|
+
# プレースホルダー (実行時に置換)
|
|
7
|
+
placeholders:
|
|
8
|
+
LARAVEL_BASE: "app"
|
|
9
|
+
LARAVEL_ROOT: ""
|
|
10
|
+
TYPESCRIPT_BASE: "resources/ts"
|
|
11
|
+
|
|
12
|
+
# ガイド定義
|
|
13
|
+
guides:
|
|
14
|
+
# ============================================================
|
|
15
|
+
# Omnify Guides
|
|
16
|
+
# ============================================================
|
|
17
|
+
- id: schema-guide
|
|
18
|
+
source: omnify/schema-guide.md.stub
|
|
19
|
+
category: guides/omnify
|
|
20
|
+
targets:
|
|
21
|
+
claude:
|
|
22
|
+
enabled: true
|
|
23
|
+
filename: schema-guide.md
|
|
24
|
+
cursor:
|
|
25
|
+
enabled: false # cursor-rules/omnify-schema.mdcを使用
|
|
26
|
+
antigravity:
|
|
27
|
+
enabled: true
|
|
28
|
+
description: "Omnify schema YAML syntax and examples"
|
|
29
|
+
priority: high
|
|
30
|
+
tags: [omnify, schema]
|
|
31
|
+
|
|
32
|
+
- id: partial-schema-guide
|
|
33
|
+
source: omnify/partial-schema-guide.md.stub
|
|
34
|
+
category: guides/omnify
|
|
35
|
+
targets:
|
|
36
|
+
claude:
|
|
37
|
+
enabled: true
|
|
38
|
+
filename: partial-schema-guide.md
|
|
39
|
+
cursor:
|
|
40
|
+
enabled: false
|
|
41
|
+
antigravity:
|
|
42
|
+
enabled: true
|
|
43
|
+
description: "Partial schema guide for package extensions"
|
|
44
|
+
priority: high
|
|
45
|
+
tags: [omnify, schema, partial, package]
|
|
46
|
+
|
|
47
|
+
- id: config-guide
|
|
48
|
+
source: omnify/config-guide.md.stub
|
|
49
|
+
category: guides/omnify
|
|
50
|
+
targets:
|
|
51
|
+
claude:
|
|
52
|
+
enabled: true
|
|
53
|
+
filename: config-guide.md
|
|
54
|
+
cursor:
|
|
55
|
+
enabled: false
|
|
56
|
+
antigravity:
|
|
57
|
+
enabled: true
|
|
58
|
+
description: "Omnify configuration options"
|
|
59
|
+
priority: medium
|
|
60
|
+
tags: [omnify, config]
|
|
61
|
+
|
|
62
|
+
- id: typescript-guide
|
|
63
|
+
source: omnify/typescript-guide.md.stub
|
|
64
|
+
category: guides/omnify
|
|
65
|
+
targets:
|
|
66
|
+
claude:
|
|
67
|
+
enabled: true
|
|
68
|
+
filename: typescript-guide.md
|
|
69
|
+
cursor:
|
|
70
|
+
enabled: false
|
|
71
|
+
|
|
72
|
+
- id: laravel-guide
|
|
73
|
+
source: omnify/laravel-guide.md.stub
|
|
74
|
+
category: guides/omnify
|
|
75
|
+
targets:
|
|
76
|
+
claude:
|
|
77
|
+
enabled: true
|
|
78
|
+
filename: laravel-guide.md
|
|
79
|
+
cursor:
|
|
80
|
+
enabled: false
|
|
81
|
+
|
|
82
|
+
- id: antdesign-guide
|
|
83
|
+
source: omnify/antdesign-guide.md.stub
|
|
84
|
+
category: guides/omnify
|
|
85
|
+
targets:
|
|
86
|
+
claude:
|
|
87
|
+
enabled: true
|
|
88
|
+
filename: antdesign-guide.md
|
|
89
|
+
cursor:
|
|
90
|
+
enabled: false
|
|
91
|
+
|
|
92
|
+
- id: react-form-guide
|
|
93
|
+
source: omnify/react-form-guide.md.stub
|
|
94
|
+
category: guides/omnify
|
|
95
|
+
targets:
|
|
96
|
+
claude:
|
|
97
|
+
enabled: true
|
|
98
|
+
filename: react-form-guide.md
|
|
99
|
+
cursor:
|
|
100
|
+
enabled: false
|
|
101
|
+
|
|
102
|
+
- id: japan-guide
|
|
103
|
+
source: omnify/japan-guide.md.stub
|
|
104
|
+
category: guides/omnify
|
|
105
|
+
targets:
|
|
106
|
+
claude:
|
|
107
|
+
enabled: true
|
|
108
|
+
filename: japan-guide.md
|
|
109
|
+
cursor:
|
|
110
|
+
enabled: false
|
|
111
|
+
|
|
112
|
+
# ============================================================
|
|
113
|
+
# Laravel Guides
|
|
114
|
+
# ============================================================
|
|
115
|
+
- id: laravel-architecture
|
|
116
|
+
source: laravel/architecture.md.stub
|
|
117
|
+
category: guides/laravel
|
|
118
|
+
targets:
|
|
119
|
+
claude:
|
|
120
|
+
enabled: true
|
|
121
|
+
filename: architecture.md
|
|
122
|
+
cursor:
|
|
123
|
+
enabled: false
|
|
124
|
+
|
|
125
|
+
- id: laravel-authentication
|
|
126
|
+
source: laravel/authentication.md.stub
|
|
127
|
+
category: guides/laravel
|
|
128
|
+
targets:
|
|
129
|
+
claude:
|
|
130
|
+
enabled: true
|
|
131
|
+
filename: authentication.md
|
|
132
|
+
cursor:
|
|
133
|
+
enabled: false
|
|
134
|
+
|
|
135
|
+
- id: laravel-controller
|
|
136
|
+
source: laravel/controller.md.stub
|
|
137
|
+
category: guides/laravel
|
|
138
|
+
targets:
|
|
139
|
+
claude:
|
|
140
|
+
enabled: true
|
|
141
|
+
filename: controller.md
|
|
142
|
+
cursor:
|
|
143
|
+
enabled: false
|
|
144
|
+
|
|
145
|
+
- id: laravel-datetime
|
|
146
|
+
source: laravel/datetime.md.stub
|
|
147
|
+
category: guides/laravel
|
|
148
|
+
targets:
|
|
149
|
+
claude:
|
|
150
|
+
enabled: true
|
|
151
|
+
filename: datetime.md
|
|
152
|
+
cursor:
|
|
153
|
+
enabled: false
|
|
154
|
+
|
|
155
|
+
- id: laravel-migrations-team
|
|
156
|
+
source: laravel/migrations-team.md.stub
|
|
157
|
+
category: guides/laravel
|
|
158
|
+
targets:
|
|
159
|
+
claude:
|
|
160
|
+
enabled: true
|
|
161
|
+
filename: migrations-team.md
|
|
162
|
+
cursor:
|
|
163
|
+
enabled: false
|
|
164
|
+
|
|
165
|
+
- id: laravel-openapi
|
|
166
|
+
source: laravel/openapi.md.stub
|
|
167
|
+
category: guides/laravel
|
|
168
|
+
targets:
|
|
169
|
+
claude:
|
|
170
|
+
enabled: true
|
|
171
|
+
filename: openapi.md
|
|
172
|
+
cursor:
|
|
173
|
+
enabled: false
|
|
174
|
+
|
|
175
|
+
- id: laravel-request
|
|
176
|
+
source: laravel/request.md.stub
|
|
177
|
+
category: guides/laravel
|
|
178
|
+
targets:
|
|
179
|
+
claude:
|
|
180
|
+
enabled: true
|
|
181
|
+
filename: request.md
|
|
182
|
+
cursor:
|
|
183
|
+
enabled: false
|
|
184
|
+
|
|
185
|
+
- id: laravel-resource
|
|
186
|
+
source: laravel/resource.md.stub
|
|
187
|
+
category: guides/laravel
|
|
188
|
+
targets:
|
|
189
|
+
claude:
|
|
190
|
+
enabled: true
|
|
191
|
+
filename: resource.md
|
|
192
|
+
cursor:
|
|
193
|
+
enabled: false
|
|
194
|
+
|
|
195
|
+
- id: laravel-service
|
|
196
|
+
source: laravel/service.md.stub
|
|
197
|
+
category: guides/laravel
|
|
198
|
+
targets:
|
|
199
|
+
claude:
|
|
200
|
+
enabled: true
|
|
201
|
+
filename: service.md
|
|
202
|
+
cursor:
|
|
203
|
+
enabled: false
|
|
204
|
+
|
|
205
|
+
- id: laravel-testing
|
|
206
|
+
source: laravel/testing.md.stub
|
|
207
|
+
category: guides/laravel
|
|
208
|
+
targets:
|
|
209
|
+
claude:
|
|
210
|
+
enabled: true
|
|
211
|
+
filename: testing.md
|
|
212
|
+
cursor:
|
|
213
|
+
enabled: false
|
|
214
|
+
|
|
215
|
+
# ============================================================
|
|
216
|
+
# React Guides
|
|
217
|
+
# ============================================================
|
|
218
|
+
- id: react-antd-guide
|
|
219
|
+
source: react/antd-guide.md.stub
|
|
220
|
+
category: guides/react
|
|
221
|
+
targets:
|
|
222
|
+
claude:
|
|
223
|
+
enabled: true
|
|
224
|
+
filename: antd-guide.md
|
|
225
|
+
cursor:
|
|
226
|
+
enabled: false
|
|
227
|
+
|
|
228
|
+
- id: react-checklist
|
|
229
|
+
source: react/checklist.md.stub
|
|
230
|
+
category: guides/react
|
|
231
|
+
targets:
|
|
232
|
+
claude:
|
|
233
|
+
enabled: true
|
|
234
|
+
filename: checklist.md
|
|
235
|
+
cursor:
|
|
236
|
+
enabled: false
|
|
237
|
+
|
|
238
|
+
- id: react-datetime-guide
|
|
239
|
+
source: react/datetime-guide.md.stub
|
|
240
|
+
category: guides/react
|
|
241
|
+
targets:
|
|
242
|
+
claude:
|
|
243
|
+
enabled: true
|
|
244
|
+
filename: datetime-guide.md
|
|
245
|
+
cursor:
|
|
246
|
+
enabled: false
|
|
247
|
+
|
|
248
|
+
- id: react-design-philosophy
|
|
249
|
+
source: react/design-philosophy.md.stub
|
|
250
|
+
category: guides/react
|
|
251
|
+
targets:
|
|
252
|
+
claude:
|
|
253
|
+
enabled: true
|
|
254
|
+
filename: design-philosophy.md
|
|
255
|
+
cursor:
|
|
256
|
+
enabled: false
|
|
257
|
+
|
|
258
|
+
- id: react-i18n-guide
|
|
259
|
+
source: react/i18n-guide.md.stub
|
|
260
|
+
category: guides/react
|
|
261
|
+
targets:
|
|
262
|
+
claude:
|
|
263
|
+
enabled: true
|
|
264
|
+
filename: i18n-guide.md
|
|
265
|
+
cursor:
|
|
266
|
+
enabled: false
|
|
267
|
+
|
|
268
|
+
- id: react-laravel-integration
|
|
269
|
+
source: react/laravel-integration.md.stub
|
|
270
|
+
category: guides/react
|
|
271
|
+
targets:
|
|
272
|
+
claude:
|
|
273
|
+
enabled: true
|
|
274
|
+
filename: laravel-integration.md
|
|
275
|
+
cursor:
|
|
276
|
+
enabled: false
|
|
277
|
+
|
|
278
|
+
- id: react-service-pattern
|
|
279
|
+
source: react/service-pattern.md.stub
|
|
280
|
+
category: guides/react
|
|
281
|
+
targets:
|
|
282
|
+
claude:
|
|
283
|
+
enabled: true
|
|
284
|
+
filename: service-pattern.md
|
|
285
|
+
cursor:
|
|
286
|
+
enabled: false
|
|
287
|
+
|
|
288
|
+
- id: react-tanstack-query
|
|
289
|
+
source: react/tanstack-query.md.stub
|
|
290
|
+
category: guides/react
|
|
291
|
+
targets:
|
|
292
|
+
claude:
|
|
293
|
+
enabled: true
|
|
294
|
+
filename: tanstack-query.md
|
|
295
|
+
cursor:
|
|
296
|
+
enabled: false
|
|
297
|
+
|
|
298
|
+
- id: react-types-guide
|
|
299
|
+
source: react/types-guide.md.stub
|
|
300
|
+
category: guides/react
|
|
301
|
+
targets:
|
|
302
|
+
claude:
|
|
303
|
+
enabled: true
|
|
304
|
+
filename: types-guide.md
|
|
305
|
+
cursor:
|
|
306
|
+
enabled: false
|
|
307
|
+
|
|
308
|
+
# ============================================================
|
|
309
|
+
# Workflows
|
|
310
|
+
# ============================================================
|
|
311
|
+
- id: workflow-bug-fix
|
|
312
|
+
source: workflows/bug-fix.md.stub
|
|
313
|
+
category: workflows
|
|
314
|
+
targets:
|
|
315
|
+
claude:
|
|
316
|
+
enabled: true
|
|
317
|
+
filename: bug-fix.md
|
|
318
|
+
cursor:
|
|
319
|
+
enabled: false
|
|
320
|
+
|
|
321
|
+
- id: workflow-code-review
|
|
322
|
+
source: workflows/code-review.md.stub
|
|
323
|
+
category: workflows
|
|
324
|
+
targets:
|
|
325
|
+
claude:
|
|
326
|
+
enabled: true
|
|
327
|
+
filename: code-review.md
|
|
328
|
+
cursor:
|
|
329
|
+
enabled: false
|
|
330
|
+
|
|
331
|
+
- id: workflow-new-feature
|
|
332
|
+
source: workflows/new-feature.md.stub
|
|
333
|
+
category: workflows
|
|
334
|
+
targets:
|
|
335
|
+
claude:
|
|
336
|
+
enabled: true
|
|
337
|
+
filename: new-feature.md
|
|
338
|
+
cursor:
|
|
339
|
+
enabled: false
|
|
340
|
+
|
|
341
|
+
# ============================================================
|
|
342
|
+
# Agents
|
|
343
|
+
# ============================================================
|
|
344
|
+
- id: agent-architect
|
|
345
|
+
source: agents/architect.md.stub
|
|
346
|
+
category: agents
|
|
347
|
+
targets:
|
|
348
|
+
claude:
|
|
349
|
+
enabled: true
|
|
350
|
+
filename: architect.md
|
|
351
|
+
cursor:
|
|
352
|
+
enabled: false
|
|
353
|
+
|
|
354
|
+
- id: agent-developer
|
|
355
|
+
source: agents/developer.md.stub
|
|
356
|
+
category: agents
|
|
357
|
+
targets:
|
|
358
|
+
claude:
|
|
359
|
+
enabled: true
|
|
360
|
+
filename: developer.md
|
|
361
|
+
cursor:
|
|
362
|
+
enabled: false
|
|
363
|
+
|
|
364
|
+
- id: agent-reviewer
|
|
365
|
+
source: agents/reviewer.md.stub
|
|
366
|
+
category: agents
|
|
367
|
+
targets:
|
|
368
|
+
claude:
|
|
369
|
+
enabled: true
|
|
370
|
+
filename: reviewer.md
|
|
371
|
+
cursor:
|
|
372
|
+
enabled: false
|
|
373
|
+
|
|
374
|
+
- id: agent-tester
|
|
375
|
+
source: agents/tester.md.stub
|
|
376
|
+
category: agents
|
|
377
|
+
targets:
|
|
378
|
+
claude:
|
|
379
|
+
enabled: true
|
|
380
|
+
filename: tester.md
|
|
381
|
+
cursor:
|
|
382
|
+
enabled: false
|
|
383
|
+
|
|
384
|
+
# ============================================================
|
|
385
|
+
# Checklists
|
|
386
|
+
# ============================================================
|
|
387
|
+
- id: checklist-backend
|
|
388
|
+
source: checklists/backend.md.stub
|
|
389
|
+
category: checklists
|
|
390
|
+
targets:
|
|
391
|
+
claude:
|
|
392
|
+
enabled: true
|
|
393
|
+
filename: backend.md
|
|
394
|
+
cursor:
|
|
395
|
+
enabled: false
|
|
396
|
+
|
|
397
|
+
- id: checklist-react
|
|
398
|
+
source: checklists/react.md.stub
|
|
399
|
+
category: checklists
|
|
400
|
+
targets:
|
|
401
|
+
claude:
|
|
402
|
+
enabled: true
|
|
403
|
+
filename: react.md
|
|
404
|
+
cursor:
|
|
405
|
+
enabled: false
|
|
406
|
+
|
|
407
|
+
# ============================================================
|
|
408
|
+
# Cursor Rules (既にfrontmatter付きのファイル)
|
|
409
|
+
# これらはcursor-rules/から直接コピー
|
|
410
|
+
# ============================================================
|
|
411
|
+
cursorRules:
|
|
412
|
+
- source: cursor-rules/omnify-schema.mdc.stub
|
|
413
|
+
- source: cursor-rules/omnify.mdc.stub
|
|
414
|
+
- source: cursor-rules/omnify-migrations.mdc.stub
|
|
415
|
+
- source: cursor-rules/schema-create.mdc.stub
|
|
416
|
+
- source: cursor-rules/migrations-workflow.mdc.stub
|
|
417
|
+
- source: cursor-rules/laravel.mdc.stub
|
|
418
|
+
- source: cursor-rules/laravel-controller.mdc.stub
|
|
419
|
+
- source: cursor-rules/laravel-request.mdc.stub
|
|
420
|
+
- source: cursor-rules/laravel-resource.mdc.stub
|
|
421
|
+
- source: cursor-rules/laravel-review.mdc.stub
|
|
422
|
+
- source: cursor-rules/laravel-testing.mdc.stub
|
|
423
|
+
- source: cursor-rules/model-editable.mdc.stub
|
|
424
|
+
- source: cursor-rules/request-editable.mdc.stub
|
|
425
|
+
- source: cursor-rules/resource-editable.mdc.stub
|
|
426
|
+
- source: cursor-rules/basemodel-readonly.mdc.stub
|
|
427
|
+
- source: cursor-rules/baserequest-readonly.mdc.stub
|
|
428
|
+
- source: cursor-rules/baseresource-readonly.mdc.stub
|
|
429
|
+
- source: cursor-rules/validation-rules.mdc.stub
|
|
430
|
+
- source: cursor-rules/react.mdc.stub
|
|
431
|
+
- source: cursor-rules/react-design.mdc.stub
|
|
432
|
+
- source: cursor-rules/react-form.mdc.stub
|
|
433
|
+
- source: cursor-rules/react-services.mdc.stub
|
|
434
|
+
- source: cursor-rules/antd-deprecations.mdc.stub
|
|
435
|
+
|
|
436
|
+
# ============================================================
|
|
437
|
+
# Claude Rules (既にmarkdown形式)
|
|
438
|
+
# これらはclaude-rules/から.claude/rules/omnify/へコピー
|
|
439
|
+
# ============================================================
|
|
440
|
+
claudeRules:
|
|
441
|
+
- source: claude-rules/laravel-controllers.md.stub
|
|
442
|
+
- source: claude-rules/laravel-migrations.md.stub
|
|
443
|
+
- source: claude-rules/laravel-tests.md.stub
|
|
444
|
+
- source: claude-rules/naming.md.stub
|
|
445
|
+
- source: claude-rules/performance.md.stub
|
|
446
|
+
- source: claude-rules/php-standards.md.stub
|
|
447
|
+
- source: claude-rules/react-components.md.stub
|
|
448
|
+
- source: claude-rules/schema-yaml.md.stub
|
|
449
|
+
- source: claude-rules/security.md.stub
|
|
450
|
+
|
|
451
|
+
# ============================================================
|
|
452
|
+
# Antigravity Rules
|
|
453
|
+
# cursor-rulesをベースに変換して.antigravity/rules/omnify/へ出力
|
|
454
|
+
# ============================================================
|
|
455
|
+
antigravityRules:
|
|
456
|
+
- source: cursor-rules/omnify-schema.mdc.stub
|
|
457
|
+
priority: high
|
|
458
|
+
tags: [omnify, schema]
|
|
459
|
+
- source: cursor-rules/omnify.mdc.stub
|
|
460
|
+
priority: high
|
|
461
|
+
tags: [omnify]
|
|
462
|
+
- source: cursor-rules/omnify-migrations.mdc.stub
|
|
463
|
+
priority: high
|
|
464
|
+
tags: [omnify, migrations]
|
|
465
|
+
- source: cursor-rules/schema-create.mdc.stub
|
|
466
|
+
priority: high
|
|
467
|
+
tags: [schema, workflow]
|
|
468
|
+
- source: cursor-rules/migrations-workflow.mdc.stub
|
|
469
|
+
priority: medium
|
|
470
|
+
tags: [migrations, workflow]
|
|
471
|
+
- source: cursor-rules/laravel.mdc.stub
|
|
472
|
+
priority: medium
|
|
473
|
+
tags: [laravel]
|
|
474
|
+
- source: cursor-rules/laravel-controller.mdc.stub
|
|
475
|
+
priority: medium
|
|
476
|
+
tags: [laravel, controller]
|
|
477
|
+
- source: cursor-rules/laravel-request.mdc.stub
|
|
478
|
+
priority: medium
|
|
479
|
+
tags: [laravel, request]
|
|
480
|
+
- source: cursor-rules/laravel-resource.mdc.stub
|
|
481
|
+
priority: medium
|
|
482
|
+
tags: [laravel, resource]
|
|
483
|
+
- source: cursor-rules/laravel-review.mdc.stub
|
|
484
|
+
priority: low
|
|
485
|
+
tags: [laravel, review]
|
|
486
|
+
- source: cursor-rules/laravel-testing.mdc.stub
|
|
487
|
+
priority: medium
|
|
488
|
+
tags: [laravel, testing]
|
|
489
|
+
- source: cursor-rules/model-editable.mdc.stub
|
|
490
|
+
priority: medium
|
|
491
|
+
tags: [laravel, model]
|
|
492
|
+
- source: cursor-rules/request-editable.mdc.stub
|
|
493
|
+
priority: medium
|
|
494
|
+
tags: [laravel, request]
|
|
495
|
+
- source: cursor-rules/resource-editable.mdc.stub
|
|
496
|
+
priority: medium
|
|
497
|
+
tags: [laravel, resource]
|
|
498
|
+
- source: cursor-rules/basemodel-readonly.mdc.stub
|
|
499
|
+
priority: low
|
|
500
|
+
tags: [laravel, model, readonly]
|
|
501
|
+
- source: cursor-rules/baserequest-readonly.mdc.stub
|
|
502
|
+
priority: low
|
|
503
|
+
tags: [laravel, request, readonly]
|
|
504
|
+
- source: cursor-rules/baseresource-readonly.mdc.stub
|
|
505
|
+
priority: low
|
|
506
|
+
tags: [laravel, resource, readonly]
|
|
507
|
+
- source: cursor-rules/validation-rules.mdc.stub
|
|
508
|
+
priority: medium
|
|
509
|
+
tags: [laravel, validation]
|
|
510
|
+
- source: cursor-rules/react.mdc.stub
|
|
511
|
+
priority: medium
|
|
512
|
+
tags: [react]
|
|
513
|
+
- source: cursor-rules/react-design.mdc.stub
|
|
514
|
+
priority: medium
|
|
515
|
+
tags: [react, design]
|
|
516
|
+
- source: cursor-rules/react-form.mdc.stub
|
|
517
|
+
priority: medium
|
|
518
|
+
tags: [react, form]
|
|
519
|
+
- source: cursor-rules/react-services.mdc.stub
|
|
520
|
+
priority: medium
|
|
521
|
+
tags: [react, services]
|
|
522
|
+
- source: cursor-rules/antd-deprecations.mdc.stub
|
|
523
|
+
priority: high
|
|
524
|
+
tags: [react, antd, deprecations]
|