@onlooker-community/ecosystem 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "onlooker-community",
3
+ "owner": {
4
+ "name": "Onlooker Community",
5
+ "email": "community@onlooker.dev"
6
+ },
7
+ "metadata": {
8
+ "description": "TODO Fill this out"
9
+ },
10
+ "plugins": [
11
+ {
12
+ "name": "ecosystem",
13
+ "source": "./",
14
+ "description": "Fill this out",
15
+ "version": "0.0.2",
16
+ "author": {
17
+ "name": "Onlooker Community"
18
+ },
19
+ "homepage": "https://onlooker.dev",
20
+ "repository": "https://github.com/onlooker-community/ecosystem",
21
+ "license": "MIT",
22
+ "keywords": [],
23
+ "tags": []
24
+ }
25
+ ]
26
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "ecosystem",
3
+ "version": "0.0.2",
4
+ "description": "TODO fill this out",
5
+ "author": {
6
+ "name": "Onlooker Community",
7
+ "url": "https://onlooker.dev"
8
+ },
9
+ "homepage": "https://onlooker.dev",
10
+ "repository": "https://github.com/onlooker-community/ecosystem",
11
+ "license": "MIT",
12
+ "skills": [
13
+ "./skills/",
14
+ "./commands/"
15
+ ],
16
+ "agents": []
17
+ }
@@ -0,0 +1,46 @@
1
+ name: Release
2
+
3
+ concurrency:
4
+ group: ${{ github.workflow }}
5
+
6
+ on:
7
+ push:
8
+ branches:
9
+ - main
10
+
11
+ permissions:
12
+ contents: write
13
+ pull-requests: write
14
+ issues: write
15
+
16
+ jobs:
17
+ release-please:
18
+ name: Release Please
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - name: Create Release
22
+ id: release
23
+ uses: googleapis/release-please-action@16a9c90856f42705d54a6fda1823352bdc62cf38 # v4.4.0
24
+ with:
25
+ # Use a PAT instead of GITHUB_TOKEN so the release PR triggers
26
+ # downstream workflows (CI, etc.). Events caused by GITHUB_TOKEN
27
+ # deliberately do not fan out to other workflows; that policy
28
+ # leaves release PRs unchecked. Set RELEASE_PLEASE_PAT to a
29
+ # fine-grained token with Contents:write + Pull requests:write
30
+ # scoped to this repo.
31
+ token: ${{ secrets.RELEASE_PLEASE_PAT }}
32
+
33
+ - name: Setup Node
34
+ uses: actions/setup-node@v6
35
+ with:
36
+ node-version: '22'
37
+
38
+ - name: Publish to npm
39
+ if: ${{ steps.release.outputs.releases_created == 'true' }}
40
+ env:
41
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
42
+ PATHS_RELEASED: ${{ steps.release.outputs.paths_released }}
43
+ run: |
44
+ printf '%s\n' "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" >> "${HOME}/.npmrc"
45
+ npm install
46
+ npm publish --access public
@@ -0,0 +1,17 @@
1
+ {
2
+ "default": true,
3
+ "MD013": false,
4
+ "MD033": false,
5
+ "MD041": false,
6
+ "MD022": false,
7
+ "MD031": false,
8
+ "MD032": false,
9
+ "MD040": false,
10
+ "MD036": false,
11
+ "MD026": false,
12
+ "MD029": false,
13
+ "MD060": false,
14
+ "MD024": {
15
+ "siblings_only": true
16
+ }
17
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.0.2"
3
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ # Changelog
2
+
3
+ ## [0.0.2](https://github.com/onlooker-community/ecosystem/compare/v0.0.1...v0.0.2) (2026-05-21)
4
+
5
+
6
+ ### Chores
7
+
8
+ * add .gitignore, update markdownlint configuration, and enhance biome.json settings ([edb47ed](https://github.com/onlooker-community/ecosystem/commit/edb47ed84d847f704668e99ac43e5613e25ab19f))
9
+ * add initial project files including configuration, scripts, and license ([dc2a803](https://github.com/onlooker-community/ecosystem/commit/dc2a8034fd5243c2d1a427ad13c0dcef2e92f713))
10
+ * initial commit ([71f1f79](https://github.com/onlooker-community/ecosystem/commit/71f1f7993cac154138ea0f8f0db6560a2624bfff))
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Onlooker Community
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,31 @@
1
+ # Onlooker Ecosystem
2
+
3
+ [![Stars](https://img.shields.io/github/stars/onlooker-community/ecosystem?style=flat)](https://github.com/onlooker-community/ecosystem/stargazers)
4
+ [![Forks](https://img.shields.io/github/forks/onlooker-community/ecosysem?style=flat)](https://github.com/onlooker-community/ecosystem/network/members)
5
+ [![Contributors](https://img.shields.io/github/contributors/onlooker-community/ecosysetm?style=flat)](https://github.com/onlooker-community/ecosystem/graphs/contributors)
6
+ [![License](https://img.shields.io/badge/license-BlueOak-blue.svg)](LICENSE)
7
+ ![Shell](https://img.shields.io/badge/-Shell-4EAA25?logo=gnu-bash&logoColor=white)
8
+ ![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?logo=typescript&logoColor=white)
9
+ ![Python](https://img.shields.io/badge/-Python-3776AB?logo=python&logoColor=white)
10
+ ![Go](https://img.shields.io/badge/-Go-00ADD8?logo=go&logoColor=white)
11
+ ![Ruby](https://img.shields.io/badge/-Ruby-ED8B00?logo=openjdk&logoColor=white)
12
+ ![Markdown](https://img.shields.io/badge/-Markdown-000000?logo=markdown&logoColor=white)
13
+
14
+ ---
15
+
16
+ Agents, skills, hooks, commands, rules, and MCP configurations that power [Onlooker](https://onlooker.dev).
17
+
18
+ ---
19
+
20
+ ## Quick Start
21
+
22
+ Get up and running in under 2 minutes:
23
+
24
+ ```bash
25
+ # Use homebrew to install Onlooker client
26
+ brew tap onlooker-community/tap
27
+ brew install onlooker
28
+
29
+ # Use the wizard to be guided through setup
30
+ onlooker setup
31
+ ```
package/biome.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "$schema": "https://biomejs.dev/schemas/2.4.15/schema.json",
3
+ "vcs": {
4
+ "enabled": true,
5
+ "clientKind": "git",
6
+ "useIgnoreFile": true
7
+ },
8
+ "files": {
9
+ "includes": ["**", "!**/node_modules"],
10
+ "ignoreUnknown": false
11
+ },
12
+ "formatter": {
13
+ "enabled": true,
14
+ "indentStyle": "space",
15
+ "indentWidth": 2,
16
+ "lineWidth": 120,
17
+ "lineEnding": "lf"
18
+ },
19
+ "linter": {
20
+ "enabled": true,
21
+ "rules": {
22
+ "recommended": true
23
+ }
24
+ },
25
+ "javascript": {
26
+ "formatter": {
27
+ "quoteStyle": "single",
28
+ "semicolons": "always",
29
+ "trailingCommas": "all",
30
+ "arrowParentheses": "always"
31
+ }
32
+ },
33
+ "json": {
34
+ "formatter": {
35
+ "trailingCommas": "none"
36
+ }
37
+ },
38
+ "assist": {
39
+ "enabled": true,
40
+ "actions": {
41
+ "source": {
42
+ "organizeImports": "on"
43
+ }
44
+ }
45
+ }
46
+ }
package/install.sh ADDED
@@ -0,0 +1,171 @@
1
+ #!/usr/bin/env bash
2
+ # install.sh -- Install claude rules while preserving directory structure.
3
+ #
4
+ # Usage:
5
+ # ./install.sh [--target <claude|cursor>] <language> [<language> ...]
6
+ #
7
+ # Examples:
8
+ # ./install.sh typescript
9
+ # ./install.sh typescript python golang
10
+ # ./install.sh --target cursor typescript
11
+ # ./install.sh --target cursor typescript python golang
12
+ #
13
+ # Targets:
14
+ # claude (default) - Install rules to ~/.claude/rules/
15
+ # cursor - Install rules, agents, skills, commands, and MCP to ./.cursor/
16
+ #
17
+ # This script copies rules into the target directory keeping the common/ and
18
+ # language-specific subdirectories intact so that:
19
+ # 1. Files with the same name in common/ and <language>/ don't overwrite each other.
20
+ # 2. Relative references (e.g. ../common/coding-style.md) remain valid.
21
+
22
+ set -euo pipefail
23
+
24
+ # Resolve symlinks -- needed when invoked as `onlooker-install` via npm/bun bin symlink
25
+ SCRIPT_PATH="$0"
26
+ while [ -L "$SCRIPT_PATH" ]; do
27
+ link_dir="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
28
+ SCRIPT_PATH="$(readlink "$SCRIPT_PATH")"
29
+ # Resolve relative symlinks
30
+ [[ "$SCRIPT_PATH" != /* ]] && SCRIPT_PATH="$link_dir/$SCRIPT_PATH"
31
+ done
32
+ SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_PATH")" && pwd)"
33
+ RULES_DIR="$SCRIPT_DIR/rules"
34
+
35
+ # --- Parse --target flag ---
36
+ TARGET="claude"
37
+ if [[ "${1:-}" == "--target" ]]; then
38
+ if [[ -z "${2:-}" ]]; then
39
+ echo "Error: --target requires a value (claude or cursor)" >&2
40
+ exit 1
41
+ fi
42
+ TARGET="$2"
43
+ shift 2
44
+ fi
45
+
46
+ if [[ "$TARGET" != "claude" && "$TARGET" != "cursor" ]]; then
47
+ echo "Error: unknown target '$TARGET'. Must be 'claude' or 'cursor'." >&2
48
+ exit 1
49
+ fi
50
+
51
+ # --- Usage ---
52
+ if [[ $# -eq 0 ]]; then
53
+ echo "Usage: $0 [--target <claude|cursor>] <language> [<language> ...]"
54
+ echo ""
55
+ echo "Targets:"
56
+ echo " claude (default) — Install rules to ~/.claude/rules/"
57
+ echo " cursor — Install rules, agents, skills, commands, and MCP to ./.cursor/"
58
+ echo ""
59
+ echo "Available languages:"
60
+ for dir in "$RULES_DIR"/*/; do
61
+ name="$(basename "$dir")"
62
+ [[ "$name" == "common" ]] && continue
63
+ echo " - $name"
64
+ done
65
+ exit 1
66
+ fi
67
+
68
+ # --- Claude target (existing behavior) ---
69
+ if [[ "$TARGET" == "claude" ]]; then
70
+ DEST_DIR="${CLAUDE_RULES_DIR:-$HOME/.claude/rules}"
71
+
72
+ # Warn if destination already exists (user may have local customizations)
73
+ if [[ -d "$DEST_DIR" ]] && [[ "$(ls -A "$DEST_DIR" 2>/dev/null)" ]]; then
74
+ echo "Note: $DEST_DIR/ already exists. Existing files will be overwritten."
75
+ echo " Back up any local customizations before proceeding."
76
+ fi
77
+
78
+ # Always install common rules
79
+ echo "Installing common rules -> $DEST_DIR/common/"
80
+ mkdir -p "$DEST_DIR/common"
81
+ cp -r "$RULES_DIR/common/." "$DEST_DIR/common/"
82
+
83
+ # Install each requested language
84
+ for lang in "$@"; do
85
+ # Validate language name to prevent path traversal
86
+ if [[ ! "$lang" =~ ^[a-zA-Z0-9_-]+$ ]]; then
87
+ echo "Error: invalid language name '$lang'. Only alphanumeric, dash, and underscore allowed." >&2
88
+ continue
89
+ fi
90
+ lang_dir="$RULES_DIR/$lang"
91
+ if [[ ! -d "$lang_dir" ]]; then
92
+ echo "Warning: rules/$lang/ does not exist, skipping." >&2
93
+ continue
94
+ fi
95
+ echo "Installing $lang rules -> $DEST_DIR/$lang/"
96
+ mkdir -p "$DEST_DIR/$lang"
97
+ cp -r "$lang_dir/." "$DEST_DIR/$lang/"
98
+ done
99
+
100
+ echo "Done. Rules installed to $DEST_DIR/"
101
+ fi
102
+
103
+ # --- Cursor target ---
104
+ if [[ "$TARGET" == "cursor" ]]; then
105
+ DEST_DIR=".cursor"
106
+ CURSOR_SRC="$SCRIPT_DIR/.cursor"
107
+
108
+ echo "Installing Cursor configs to $DEST_DIR/"
109
+
110
+ # --- Rules ---
111
+ echo "Installing common rules -> $DEST_DIR/rules/"
112
+ mkdir -p "$DEST_DIR/rules"
113
+ # Copy common rules (flattened names like common-coding-style.md)
114
+ if [[ -d "$CURSOR_SRC/rules" ]]; then
115
+ for f in "$CURSOR_SRC/rules"/common-*.md; do
116
+ [[ -f "$f" ]] && cp "$f" "$DEST_DIR/rules/"
117
+ done
118
+ fi
119
+
120
+ # Install language-specific rules
121
+ for lang in "$@"; do
122
+ # Validate language name to prevent path traversal
123
+ if [[ ! "$lang" =~ ^[a-zA-Z0-9_-]+$ ]]; then
124
+ echo "Error: invalid language name '$lang'. Only alphanumeric, dash, and underscore allowed." >&2
125
+ continue
126
+ fi
127
+ if [[ -d "$CURSOR_SRC/rules" ]]; then
128
+ found=false
129
+ for f in "$CURSOR_SRC/rules"/${lang}-*.md; do
130
+ if [[ -f "$f" ]]; then
131
+ cp "$f" "$DEST_DIR/rules/"
132
+ found=true
133
+ fi
134
+ done
135
+ if $found; then
136
+ echo "Installing $lang rules -> $DEST_DIR/rules/"
137
+ else
138
+ echo "Warning: no Cursor rules for '$lang' found, skipping." >&2
139
+ fi
140
+ fi
141
+ done
142
+
143
+ # --- Agents ---
144
+ if [[ -d "$CURSOR_SRC/agents" ]]; then
145
+ echo "Installing agents -> $DEST_DIR/agents/"
146
+ mkdir -p "$DEST_DIR/agents"
147
+ cp -r "$CURSOR_SRC/agents/." "$DEST_DIR/agents/"
148
+ fi
149
+
150
+ # --- Skills ---
151
+ if [[ -d "$CURSOR_SRC/skills" ]]; then
152
+ echo "Installing skills -> $DEST_DIR/skills/"
153
+ mkdir -p "$DEST_DIR/skills"
154
+ cp -r "$CURSOR_SRC/skills/." "$DEST_DIR/skills/"
155
+ fi
156
+
157
+ # --- Commands ---
158
+ if [[ -d "$CURSOR_SRC/commands" ]]; then
159
+ echo "Installing commands -> $DEST_DIR/commands/"
160
+ mkdir -p "$DEST_DIR/commands"
161
+ cp -r "$CURSOR_SRC/commands/." "$DEST_DIR/commands/"
162
+ fi
163
+
164
+ # --- MCP Config ---
165
+ if [[ -f "$CURSOR_SRC/mcp.json" ]]; then
166
+ echo "Installing MCP config -> $DEST_DIR/mcp.json"
167
+ cp "$CURSOR_SRC/mcp.json" "$DEST_DIR/mcp.json"
168
+ fi
169
+
170
+ echo "Done. Cursor configs installed to $DEST_DIR/"
171
+ fi
package/mise.toml ADDED
@@ -0,0 +1,2 @@
1
+ [tools]
2
+ node = "26.1.0"
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@onlooker-community/ecosystem",
3
+ "version": "0.0.2",
4
+ "description": "Agents, skills, hooks, commands, rules, and MCP configurations that power [Onlooker](https://onlooker.dev)",
5
+ "author": {
6
+ "name": "Onlooker Community",
7
+ "url": "https://onlooker.dev"
8
+ },
9
+ "license": "MIT",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git:https://github.com/onlooker-community/ecosystem.git"
13
+ },
14
+ "homepage": "https://github.com/onlooker-community/ecosystem#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/onlooker-community/ecosystem/issues"
17
+ },
18
+ "bin": {
19
+ "onlooker-install": "install.sh"
20
+ },
21
+ "scripts": {
22
+ "postinstall": "echo '\\n onlooker-ecosystem installed!\\n Run: npx onlooker-install typescript\\n Docs: https://github.com/onlooker-community/ecosystem\\n'",
23
+ "lint:check": "biome check . && markdownlint '**/*.md' --ignore node_modules",
24
+ "lint": "biome lint --write",
25
+ "format": "biome format --write",
26
+ "format:check": "biome format",
27
+ "biome:ci": "biome ci"
28
+ },
29
+ "engines": {
30
+ "node": ">=18"
31
+ },
32
+ "devDependencies": {
33
+ "@biomejs/biome": "2.4.15",
34
+ "globals": "^17.6.0",
35
+ "markdownlint-cli": "^0.48.0"
36
+ }
37
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
+ "packages": {
4
+ ".": {
5
+ "release-type": "node",
6
+ "pull-request-title-pattern": "chore: release ${version}",
7
+ "changelog-path": "CHANGELOG.md",
8
+ "include-component-in-tag": false,
9
+ "include-v-in-tag": true,
10
+ "extra-files": [
11
+ {
12
+ "type": "json",
13
+ "path": "package.json",
14
+ "jsonpath": "$.version"
15
+ },
16
+ {
17
+ "type": "json",
18
+ "path": ".claude-plugin/plugin.json",
19
+ "jsonpath": "$.version"
20
+ },
21
+ {
22
+ "type": "json",
23
+ "path": ".claude-plugin/marketplace.json",
24
+ "jsonpath": "$.plugins[0].version"
25
+ }
26
+ ],
27
+ "changelog-sections": [
28
+ { "type": "feat", "section": "Features" },
29
+ { "type": "fix", "section": "Bug Fixes" },
30
+ { "type": "perf", "section": "Performance" },
31
+ { "type": "refactor", "section": "Refactoring" },
32
+ { "type": "docs", "section": "Documentation" },
33
+ { "type": "test", "section": "Tests" },
34
+ { "type": "chore", "section": "Chores" },
35
+ { "type": "ci", "section": "CI/CD" },
36
+ { "type": "build", "section": "Build" }
37
+ ]
38
+ }
39
+ }
40
+ }