open-index/open-npm huggingface dataset:
npm package: @itaromi/airul
Description: One source of truth for your AI rules. Sync to Claude, Cursor, Copilot, Windsurf and more.
Latest version: 0.1.1

# airul

> One source of truth for all your AI coding rules.

Stop maintaining `.cursorrules`, `CLAUDE.md`, `.windsurfrules` separately.
Write your rules once in `.airul`, sync everywhere.

## Install

```bash
npm install -g @itaromi/airul
```

## Usage

```bash
# Initialize a .airul file in your project
airul init

# Generate all AI rule files
airul sync

# Watch mode — auto-sync on save
airul watch

# Install a git pre-commit hook (auto-sync before every commit)
airul add-hook

# Validate generated files are up to date (useful in CI)
airul validate
```

## Supported targets

| Tool | File generated |
|------|----------------|
| Claude Code | `CLAUDE.md` |
| Cursor | `.cursorrules` |
| GitHub Copilot | `.github/copilot-instructions.md` |
| Windsurf | `.windsurfrules` |
| Gemini CLI | `GEMINI.md` |

## The `.airul` format

```yaml
# .airul — single source of truth for your AI coding rules
version: 1

targets:
  - claude
  - cursor
  - copilot
  - windsurf
  - gemini

rules:
  - id: lang
    content: "Always respond in the same language the user writes in."

  - id: stack
    content: |
      Stack: Next.js 14, TypeScript strict, Tailwind CSS, Prisma + PostgreSQL.
      Never use `any`. Prefer TypeScript utility types.

  - id: style
    content: "React components as arrow functions. No inline CSS classes."

  - id: tests
    content: "Write Vitest tests for every utility function."

  # Rule targeted to specific tools only
  - id: commits
    content: "Use Conventional Commits format."
    only: [claude, cursor]
```

### Rule fields

| Field | Required | Description |
|-------|----------|-------------|
| `id` | yes | Unique identifier |
| `content` | yes | The rule text (supports multi-line with `\|`) |
| `only` | no | Restrict this rule to specific targets |
| `except` | no | Exclude this rule from specific targets |

## Options

```bash
airul sync --dry-run                  # Preview output without writing files
airul sync --targets claude,cursor    # Override which targets to sync
airul sync --config path/to/.airul    # Use a custom config file
airul sync --quiet                    # Suppress output
```

## CI usage

Add to your pipeline to ensure rule files are always in sync:

```yaml
- run: npx @itaromi/airul validate
```

Exits with code 1 if any generated file is missing or out of sync.
npm package: @itasis/oasis-tools
Description: The tool for OASIS services # Prerequisites - NodeJS >= 14 (Recommend Node 16) - yarn@1.19.0 (Not using npm due to the workspaces feature) # How to use? ## Create docker file - Script to execute: ```bash   yarn oasis-tools create-docker  ``` - Options(opt
Author: Luc
Latest version: 1.6.0

# oasis-tools
The tool for OASIS services
# Prerequisites
- NodeJS >= 14 (Recommend Node 16)
- yarn@1.19.0 (Not using npm due to the workspaces feature)
# How to use?
## Create docker file
- Script to execute:
```bash
  yarn oasis-tools create-docker 
```
- Options(optional):
  - "--functions-dir": The directory containing the functions
  - "--root-dir": The root directory

## Create index.ts files for services
- Script to execute:
```bash
  npx ts-node --transpile-only --prefer-ts-exts node_modules/oasis-tools/cli.ts create-handler 
```
- Options(optional):
  - "--functions-dir": The directory containing the functions
  - "--excludes": The services exclude when generating actions
## Create actions for moleculer service
- Script to execute:
```bash
  yarn oasis-tools create-moleculer 
```
- Options(optional):
  - "--functions-dir": The directory containing the functions
  - "--packages-dir": The directory containing the packages
  - "--excludes": The services exclude when generating actions

## Create a user or get token from existing user
- Script to execute:
```bash
  yarn oasis-tools create-user --email your@mail.com --password test123456 --clientId xyz --poolId ap-southeast-1_AABBCC --region ap-southeast-1

```