name: CI on: push: branches: [main, master] pull_request: branches: [main, master] jobs: lint-markdown: name: Lint Markdown runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: '20' - name: Install markdownlint-cli run: npm install -g markdownlint-cli - name: Run markdownlint run: markdownlint '**/*.md' --ignore node_modules --ignore libs/external || true check-links: name: Check Links runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Link Checker uses: lycheeverse/lychee-action@v1 with: args: --verbose --no-progress './**/*.md' --exclude-path libs/external fail: false validate-structure: name: Validate Project Structure runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Check required files run: | echo "Checking required files..." files=("README.md" "LICENSE" "CONTRIBUTING.md" "CODE_OF_CONDUCT.md" "AGENTS.md" "CLAUDE.md") for file in "${files[@]}"; do if [ -f "$file" ]; then echo "✓ $file exists" else echo "✗ $file missing" fi done - name: Check i18n structure run: | echo "Checking i18n directories..." for lang in zh en; do if [ -d "i18n/$lang" ]; then echo "✓ i18n/$lang exists" else echo "✗ i18n/$lang missing" fi done