Skill: omactiengartelle/tattoo-design-generator (version 1.0.0)

--- name: tattoo-design-generator description: AI tattoo design generator for creating custom tattoo concept art, ink illustrations, and tattoo reference sheets. Generate flash tattoo designs, sleeve ideas, minimalist tattoo art, tribal patterns, and fine line tattoo sketches — perfect for tattoo artists, studios, and anyone planning their next ink via the Neta AI image generation API (free trial at neta.art/open). tools: Bash --- # Tattoo Design Generator AI tattoo design generator for creating custom tattoo concept art, ink illustrations, and tattoo reference sheets. Generate flash tattoo designs, sleeve ideas, minimalist tattoo art, tribal patterns, and fine line tattoo sketches — perfect for tattoo artists, studios, and anyone planning their next ink. ## Token Requires a Neta API token (free trial at <https://www.neta.art/open/>). Pass it via the `--token` flag. ```bash node <script> "your prompt" --token YOUR_TOKEN ``` ## When to use Use when someone asks to generate or create tattoo design generator images. ## Quick start ```bash node tattoodesigngenerator.js "your description here" --token YOUR_TOKEN ``` ## Options - `--size` — `portrait`, `landscape`, `square`, `tall` (default: `portrait`) - `--ref` — reference image UUID for style inheritance ## Install ```bash npx skills add omactiengartelle/tattoo-design-generator ```

path: README.md
content: # Tattoo Design Generator

Generate custom tattoo concept art, ink illustrations, and tattoo reference sheets from text descriptions. Describe your idea — a Japanese koi fish, a geometric mandala, a fine line floral sleeve — and get back a ready-to-use tattoo design image. Perfect for tattoo artists, studios, and anyone planning their next ink.

Powered by the Neta AI image generation API (api.talesofai.com) — the same service as neta.art/open.

---

## Install

**Via npx skills:**
```bash
npx skills add omactiengartelle/tattoo-design-generator
```

**Via ClawHub:**
```bash
clawhub install tattoo-design-generator
```

---

## Token Setup

This skill requires a Neta API token (free trial available at <https://www.neta.art/open/>).

Pass it via the `--token` flag:

```bash
node <script> "your prompt" --token YOUR_TOKEN
```

## Usage

```bash
node tattoodesigngenerator.js "<description>" --token YOUR_TOKEN [--size <size>] [--ref <uuid>]
```

### Examples

```bash
# Fine line botanical sleeve concept
node tattoodesigngenerator.js "fine line botanical sleeve with roses, ferns, and butterflies, delicate linework, black ink" --token "$NETA_TOKEN"

# Traditional Japanese koi
node tattoodesigngenerator.js "traditional Japanese koi fish tattoo, bold outlines, red and black ink, waves" --token "$NETA_TOKEN" --size square

# Minimalist geometric mandala
node tattoodesigngenerator.js "minimalist geometric mandala tattoo, dotwork shading, sacred geometry, black ink" --token "$NETA_TOKEN" --size portrait

# Tribal armband
node tattoodesigngenerator.js "Polynesian tribal armband tattoo, bold black ink, traditional patterns" --token "$NETA_TOKEN" --size landscape
```

### Output

Returns a direct image URL.

---

## Options

| Flag | Description | Default |
|------|-------------|---------|
| `--token` | Neta API token (required) | — |
| `--size` | Output image size: `portrait`, `landscape`, `square`, `tall` | `portrait` |
| `--ref` | Reference image UUID for style inheritance | — |

### Size dimensions

| Size | Dimensions |
|------|------------|
| `portrait` | 832 × 1216 |
| `landscape` | 1216 × 832 |
| `square` | 1024 × 1024 |
| `tall` | 704 × 1408 |

---

## Default Prompt

If no prompt is provided, the script uses:

```
tattoo design concept art, bold black ink linework, intricate detailed illustration, clean lines, black and white tattoo sketch, fine line tattoo style, ready for skin
```



path: package.json
content: name: tattoo-design-generator
version: 1.0.0
type: module
description: Tattoo Design Generator — AI-powered tattoo design generator ai
license: MIT

path: tattoodesigngenerator.js
content: #!/usr/bin/env node
// Tattoo Design Generator — AI-powered tattoo concept art via Neta API

const args = process.argv.slice(2);

// Parse CLI arguments
let prompt = null;
let size = 'portrait';
let tokenFlag = null;
let refUuid = null;

for (let i = 0; i < args.length; i++) {
  if (args[i] === '--token' && args[i + 1]) {
    tokenFlag = args[++i];
  } else if (args[i] === '--size' && args[i + 1]) {
    size = args[++i];
  } else if (args[i] === '--ref' && args[i + 1]) {
    refUuid = args[++i];
  } else if (!args[i].startsWith('--') && prompt === null) {
    prompt = args[i];
  }
}

const [REDACTED_SECRET];

if (!TOKEN) {
  console.error('\n✗ Token required. Pass via: --token YOUR_TOKEN');
  console.error('  Get yours at: https://www.neta.art/open/');
  process.exit(1);
}

if (!prompt) {
  prompt = 'tattoo design concept art, bold black ink linework, intricate detailed illustration, clean lines, black and white tattoo sketch, fine line tattoo style, ready for skin';
}

const SIZES = {
  square:    { width: 1024, height: 1024 },
  portrait:  { width: 832,  height: 1216 },
  landscape: { width: 1216, height: 832  },
  tall:      { width: 704,  height: 1408 },
};

const dims = SIZES[size] || SIZES.portrait;

const HEADERS = {
  'x-token': TOKEN,
  'x-platform': 'nieta-app/web',
  'content-type': 'application/json',
};

async function makeImage() {
  const body = {
    storyId: 'DO_NOT_USE',
    jobType: 'universal',
    rawPrompt: [{ type: 'freetext', value: prompt, weight: 1 }],
    width: dims.width,
    height: dims.height,
    meta: { entrance: 'PICTURE,VERSE' },
    context_model_series: '8_image_edit',
  };

  if (refUuid) {
    body.inherit_params = {
      collection_uuid: refUuid,
      picture_uuid: refUuid,
    };
  }

  const res = await fetch('https://api.talesofai.com/v3/make_image', {
    method: 'POST',
    headers: HEADERS,
    body: JSON.stringify(body),
  });

  if (!res.ok) {
    const text = await res.text();
    console.error(`✗ Failed to create task (${res.status}): ${text}`);
    process.exit(1);
  }

  const data = await res.json();
  const taskUuid = typeof data === 'string' ? data : data.task_uuid;

  if (!taskUuid) {
    console.error('✗ No task_uuid in response:', JSON.stringify(data));
    process.exit(1);
  }

  return taskUuid;
}

async function pollTask(taskUuid) {
  const MAX_ATTEMPTS = 90;
  const POLL_INTERVAL_MS = 2000;

  for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) {
    await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));

    const res = await fetch(`https://api.talesofai.com/v1/artifact/task/${taskUuid}`, {
      headers: HEADERS,
    });

    if (!res.ok) {
      const text = await res.text();
      console.error(`✗ Poll failed (${res.status}): ${text}`);
      process.exit(1);
    }

    const data = await res.json();
    const status = data.task_status;

    if (status === 'PENDING' || status === 'MODERATION') {
      continue;
    }

    // Done — extract image URL
    const url =
      (data.artifacts && data.artifacts[0] && data.artifacts[0].url) ||
      data.result_image_url;

    if (!url) {
      console.error('✗ Task finished but no image URL found:', JSON.stringify(data));
      process.exit(1);
    }

    console.log(url);
    process.exit(0);
  }

  console.error('✗ Timed out waiting for image generation.');
  process.exit(1);
}

(async () => {
  const taskUuid = await makeImage();
  await pollTask(taskUuid);
})();


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)