- Created skills/ directory - Moved 272 skills to skills/ subfolder - Kept agents/ at root level - Kept installation scripts and docs at root level Repository structure: - skills/ - All 272 skills from skills.sh - agents/ - Agent definitions - *.sh, *.ps1 - Installation scripts - README.md, etc. - Documentation Co-Authored-By: Claude <noreply@anthropic.com>
62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
/**
|
|
* Git Smart Commit Command
|
|
* Creates intelligent commits with auto-staging and conventional commits
|
|
*/
|
|
|
|
import { exec } from 'child_process'
|
|
import { promisify } from 'util'
|
|
|
|
const execAsync = promisify(exec)
|
|
|
|
export interface SmartCommitOptions {
|
|
message?: string
|
|
type?: 'feat' | 'fix' | 'docs' | 'style' | 'refactor' | 'test' | 'chore'
|
|
scope?: string
|
|
stageAll?: boolean
|
|
amend?: boolean
|
|
}
|
|
|
|
export async function handle(
|
|
args: SmartCommitOptions,
|
|
context: any
|
|
): Promise<string> {
|
|
const { message, type = 'feat', scope, stageAll = true, amend = false } = args
|
|
|
|
try {
|
|
// Stage files if requested
|
|
if (stageAll && !amend) {
|
|
await execAsync('git add -A')
|
|
context.sandbox.log('Staged all changes')
|
|
}
|
|
|
|
// Generate commit message if not provided
|
|
let commitMessage = message
|
|
|
|
if (!commitMessage) {
|
|
// Get diff to generate intelligent message
|
|
const { stdout: diff } = await execAsync('git diff --cached --stat')
|
|
|
|
if (!diff || diff.trim().length === 0) {
|
|
return 'No changes to commit'
|
|
}
|
|
|
|
// Simple auto-generation based on diff
|
|
commitMessage = `${type}${scope ? `(${scope})` : ''}: `
|
|
commitMessage += 'update code based on changes'
|
|
}
|
|
|
|
// Create commit
|
|
const amendFlag = amend ? '--amend' : ''
|
|
const { stdout } = await execAsync(
|
|
`git commit ${amendFlag} -m "${commitMessage}"`
|
|
)
|
|
|
|
return `✓ Committed successfully:\n${stdout}`
|
|
} catch (error: any) {
|
|
throw new Error(`Git commit failed: ${error.message}`)
|
|
}
|
|
}
|
|
|
|
// Export for CLI usage
|
|
export default { handle }
|