feat: add skills and workspace files

- Add complete skill set including feishu, github, ci-gen, etc.
- Add workspace documentation (AGENTS.md, SOUL.md, etc.)
- Add memory system and project context
This commit is contained in:
OpenClaw Agent
2026-02-06 19:14:24 +08:00
parent f26d4d8f7f
commit 7e0acef4f9
118 changed files with 12293 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
#!/usr/bin/env node
import { Command } from "commander";
import ora from "ora";
import * as fs from "fs";
import * as path from "path";
import { generateWorkflow } from "./index";
const program = new Command();
program
.name("ai-github-action")
.description("Generate GitHub Actions workflows from plain English")
.version("1.0.0")
.argument("<description>", "Describe the workflow you need")
.option("-o, --output <file>", "Output file path")
.option("--install", "Write to .github/workflows/ directory", false)
.action(async (description, opts) => {
const spinner = ora("Generating workflow...").start();
try {
const yaml = await generateWorkflow(description);
spinner.stop();
if (opts.install) {
const dir = ".github/workflows";
fs.mkdirSync(dir, { recursive: true });
const file = path.join(dir, "ai-generated.yml");
fs.writeFileSync(file, yaml);
console.log(`Workflow written to ${file}`);
} else if (opts.output) {
fs.writeFileSync(opts.output, yaml);
console.log(`Workflow written to ${opts.output}`);
} else {
console.log("\n" + yaml + "\n");
}
} catch (err: any) {
spinner.fail(err.message);
process.exit(1);
}
});
program.parse();
+21
View File
@@ -0,0 +1,21 @@
import OpenAI from "openai";
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
export async function generateWorkflow(description: string): Promise<string> {
const res = await openai.chat.completions.create({
model: "gpt-4o-mini",
messages: [
{
role: "system",
content: "You are a DevOps expert. Generate a complete GitHub Actions workflow YAML file based on the description. Use best practices: proper triggers, caching, environment variables, and job dependencies. Return ONLY the YAML content, no explanation.",
},
{
role: "user",
content: `Create a GitHub Actions workflow: ${description}`,
},
],
temperature: 0.3,
});
return res.choices[0].message.content || "";
}