| name | add-skill-norish |
| description | Add Norish recipe import to NanoTars agents. Send recipe URLs to your Norish instance for automatic import. Triggers on "add norish", "norish setup", "recipe import", "norish integration". |
Add Norish
Adds the ability to import recipes into your Norish instance by URL. When the agent sees a recipe link, it can POST it to Norish for automatic scraping and import.
Preflight
Before installing, verify NanoTars is set up:
[ -d node_modules ] && echo "DEPS: ok" || echo "DEPS: missing"
docker image inspect nanoclaw-agent:latest &>/dev/null && echo "IMAGE: ok" || echo "IMAGE: not built"
if grep -q "ANTHROPIC_API_KEY\|CLAUDE_CODE_OAUTH_TOKEN" .env 2>/dev/null || [ -f "$HOME/.claude/.credentials.json" ]; then echo "AUTH: ok"; else echo "AUTH: missing"; fi
If any check fails, tell the user to run /nanotars-setup first and stop.
Prerequisites
- A running Norish instance with an API key
Install
-
Check current state:
[ -d plugins/norish ] && echo "PLUGIN_EXISTS" || echo "NEED_PLUGIN"
If plugin exists, skip to Verify.
-
Add your Norish credentials to .env:
echo "NORISH_URL=https://your-norish-instance.example.com" >> .env
echo "NORISH_API_KEY=your-api-key-here" >> .env
Ask the user for their Norish URL (no trailing slash) and API key.
-
Copy plugin files:
cp -r ${CLAUDE_PLUGIN_ROOT}/files/ plugins/norish/
-
Plugin Configuration: By default this plugin is available to all groups and channel types. To restrict access, edit plugins/norish/plugin.json and set:
"groups" to specific group folder names (e.g., ["main"]) instead of ["*"]
"channels" to specific channel types (e.g., ["whatsapp"]) instead of ["*"]
Ask the user if they want to restrict access. Most users will keep the defaults.
-
Rebuild and restart:
npm run build
nanotars restart
Verify
Read the credentials from .env:
NORISH_URL=$(grep "^NORISH_URL=" .env | cut -d= -f2)
NORISH_API_KEY=$(grep "^NORISH_API_KEY=" .env | cut -d= -f2)
Test the connection (should return 400 since no URL provided, but proves auth works):
curl -s -X POST "${NORISH_URL}/api/import/recipe" \
-H "x-api-key: ${NORISH_API_KEY}" \
-H "Content-Type: application/json" \
-d '{}' | jq .
If you get a 400 with a message about missing URL, the connection and auth are working.
If you get a 401, the API key is wrong.
Usage Examples
Send the agent a message like:
The agent will POST the URL to Norish and confirm it was queued.
How It Works
The agent uses curl to POST recipe URLs to your Norish instance's /api/import/recipe endpoint. Norish scrapes the page, extracts structured recipe data, and adds it to your collection. Authentication is via the x-api-key header.
Troubleshooting
401 Unauthorized
The API key is wrong. Check .env has the correct NORISH_API_KEY.
Connection refused
Check NORISH_URL in .env is correct and the Norish instance is running. Make sure the URL is reachable from the NanoTars server.
Agent not using the skill
Make sure the plugin was copied correctly:
ls plugins/norish/container-skills/SKILL.md
Existing Installation (Per-Group Credentials)
If this plugin is already installed and you want different credentials for a specific group (e.g., a work account for one group, personal for another):
-
Check which groups exist:
ls -d groups/*/
-
Ask the user which group should get separate credentials.
-
Collect the new Norish credentials for that group.
-
Write to the group's .env file (creates if needed):
echo 'NORISH_URL=https://other-norish.example.com' >> groups/{folder}/.env
echo 'NORISH_API_KEY=api-key' >> groups/{folder}/.env
These values override the global .env for that group's containers only.
-
Restart NanoTars:
nanotars restart
Remove
rm -rf plugins/norish/
- Remove env vars from
.env:
sed -i '/^NORISH_URL=/d' .env
sed -i '/^NORISH_API_KEY=/d' .env
- Rebuild and restart.