@geekjourneyx/findo 1.2.2 → 1.2.3

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.
package/CHANGELOG.md CHANGED
@@ -1,10 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.2.3
4
+
5
+ - Keep `skills/findo` as pure Agent Skill content and remove Go code from `skills/`.
6
+ - Load bundled skill content through `internal/skillcontent` using the repository or npm package `skills/` directory.
7
+ - Ship `skills/findo` in npm packages and GitHub Release archives, and smoke-test `findo skills read` from npm installs.
8
+ - Simplify `skills/findo/SKILL.md` into a concise English Agent SOP.
9
+
3
10
  ## v1.2.2
4
11
 
5
12
  - Remove the duplicated internal Agent skill copy.
6
- - Embed directly from `skills/findo` through the `skills` package, keeping `skills/findo` as the single source of truth.
7
- - Update release checks to guard the single-source embed path instead of comparing mirrored files.
13
+ - Move toward a single root Agent skill source after removing the mirrored internal copy.
14
+ - Update release checks to guard against mirrored skill files.
8
15
 
9
16
  ## v1.2.1
10
17
 
package/README.md CHANGED
@@ -27,7 +27,7 @@ The npm package installs the matching GitHub Release binary for your platform an
27
27
  Alternative Go install:
28
28
 
29
29
  ```bash
30
- go install github.com/geekjourneyx/findo/cmd/findo@v1.2.2
30
+ go install github.com/geekjourneyx/findo/cmd/findo@v1.2.3
31
31
  ```
32
32
 
33
33
  Prebuilt binaries and checksums are available on the [GitHub Releases](https://github.com/geekjourneyx/findo/releases) page.
@@ -117,7 +117,13 @@ Human output defaults to a table. Use `--json` for scripts, agents, CI, and down
117
117
 
118
118
  ## Agent Skill
119
119
 
120
- Findo embeds its Agent SOP in the release binary so agents can read instructions that match the executable on `PATH`:
120
+ Recommended Agent Skills install:
121
+
122
+ ```bash
123
+ npx skills add geekjourneyx/findo
124
+ ```
125
+
126
+ Findo also ships the same Agent SOP with the CLI package so agents can read instructions that match the executable on `PATH`:
121
127
 
122
128
  ```bash
123
129
  findo skills list --json
@@ -125,7 +131,7 @@ findo skills read findo
125
131
  findo skills read findo --json
126
132
  ```
127
133
 
128
- `skills read` defaults to raw Markdown for direct agent context. With `--json`, the same content is returned in the `content` field with version metadata. Use this when an external skill install, README, or repository checkout may be older than the installed CLI.
134
+ `skills read` defaults to raw Markdown for direct agent context. With `--json`, the same content is returned in the `content` field with version metadata. Use this when you need to verify the SOP bundled with the installed CLI.
129
135
 
130
136
  ## Output
131
137
 
@@ -133,7 +139,7 @@ Retrieval commands return a stable envelope. A successful JSON response looks li
133
139
 
134
140
  ```json
135
141
  {
136
- "version": "1.2.2",
142
+ "version": "1.2.3",
137
143
  "query": {
138
144
  "text": "AI Agent 商业化",
139
145
  "mode": "search",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geekjourneyx/findo",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "Install the findo CLI from the matching GitHub Release bundle.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -21,6 +21,8 @@
21
21
  "files": [
22
22
  "scripts/install.js",
23
23
  "scripts/run.js",
24
+ "skills/findo/SKILL.md",
25
+ "skills/findo/test-prompts.json",
24
26
  "README.md",
25
27
  "CHANGELOG.md",
26
28
  "LICENSE"
package/scripts/run.js CHANGED
@@ -6,6 +6,7 @@ const { execFileSync } = require("child_process");
6
6
 
7
7
  const ext = process.platform === "win32" ? ".exe" : "";
8
8
  const binaryPath = path.join(__dirname, "..", "bin", `findo${ext}`);
9
+ const skillsPath = path.join(__dirname, "..", "skills");
9
10
 
10
11
  if (!fs.existsSync(binaryPath)) {
11
12
  console.error(
@@ -15,7 +16,11 @@ if (!fs.existsSync(binaryPath)) {
15
16
  }
16
17
 
17
18
  try {
18
- execFileSync(binaryPath, process.argv.slice(2), { stdio: "inherit" });
19
+ const env = { ...process.env };
20
+ if (!env.FINDO_SKILLS_DIR && fs.existsSync(skillsPath)) {
21
+ env.FINDO_SKILLS_DIR = skillsPath;
22
+ }
23
+ execFileSync(binaryPath, process.argv.slice(2), { stdio: "inherit", env });
19
24
  } catch (error) {
20
25
  if (typeof error.status === "number") {
21
26
  process.exit(error.status);
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: findo
3
+ description: >-
4
+ Use Findo, an Agent Native Go CLI for Chinese internet research. Use when the user asks to search Chinese web sources, Zhihu, Zhihu hotlists, Bocha, Volcengine Ark, Chinese internet topics, source-backed briefs, contradiction checks, counterintuitive topic discovery, popular answers, live provider testing, or current Chinese web signals.
5
+ ---
6
+
7
+ # Findo
8
+
9
+ Use `findo` to retrieve Chinese internet sources through provider APIs and return source-backed answers. Prefer `--json` for agent workflows.
10
+
11
+ ## Before Running
12
+
13
+ Check availability:
14
+
15
+ ```bash
16
+ findo version
17
+ findo config show --json
18
+ ```
19
+
20
+ If `findo` is missing and the user asked for setup, install it:
21
+
22
+ ```bash
23
+ npm install -g @geekjourneyx/findo
24
+ ```
25
+
26
+ Never print `.env`, API keys, bearer tokens, raw config files, or CI secrets. Treat redacted config values as expected.
27
+
28
+ ## Choose A Source
29
+
30
+ Use the narrowest source that matches the task:
31
+
32
+ | Need | Command |
33
+ | --- | --- |
34
+ | Broad web evidence | `findo bocha "<query>" --json --limit 5` |
35
+ | Web-grounded direct answer | `findo volc "<query>" --json --limit 1` |
36
+ | Zhihu opinions and discussions | `findo zhihu "<query>" --json --limit 5` |
37
+ | Zhihu-backed global web search | `findo zhihu web "<query>" --json --limit 5` |
38
+ | Current Zhihu hotlist | `findo hot zhihu --json` |
39
+ | Available source IDs | `findo sources --json` |
40
+
41
+ Use Zhihu for opinion-rich questions, Bocha for broad corroboration, Volcengine for synthesized direct answers, and hotlist for current attention.
42
+
43
+ For Zhihu global search only, filters are valid:
44
+
45
+ ```bash
46
+ findo zhihu web "<query>" --filter 'host=="example.com"' --search-db realtime --json
47
+ ```
48
+
49
+ ## Research Workflow
50
+
51
+ 1. Rewrite the user request into 2-5 concrete Chinese queries with aliases, product names, and time qualifiers when useful.
52
+ 2. Start with `--limit 3` to `--limit 5`; increase only when coverage is weak.
53
+ 3. Inspect `status`, `results`, `source_status`, and `errors` in JSON output.
54
+ 4. Cross-check important claims across sources before presenting them as facts.
55
+ 5. Separate source claims from your inference. Mention provider failures when they reduce confidence.
56
+
57
+ ## Answer Shape
58
+
59
+ For research answers:
60
+
61
+ ```markdown
62
+ **Conclusion**
63
+ One concise answer.
64
+
65
+ **Evidence**
66
+ - Source, title, URL, key point.
67
+ - Source, title, URL, key point.
68
+
69
+ **Assessment**
70
+ What is likely true, what is uncertain, and what to verify next.
71
+ ```
72
+
73
+ For topic discovery:
74
+
75
+ ```markdown
76
+ **Topic Candidates**
77
+ 1. Topic: why it matters, source signal, suggested angle.
78
+ 2. Topic: why it matters, source signal, suggested angle.
79
+
80
+ **Counterintuitive Point**
81
+ What contradicts common assumptions.
82
+
83
+ **Next Step**
84
+ Exact follow-up searches or validation steps.
85
+ ```
86
+
87
+ ## Failure Handling
88
+
89
+ | Signal | Action |
90
+ | --- | --- |
91
+ | `credential_missing` or exit `4` | Check redacted config; ask for the relevant provider key if needed. |
92
+ | Exit `2` | Remove incompatible flags and rerun the simplest valid command. |
93
+ | Exit `5` | Retry once with a smaller limit, then switch provider. |
94
+ | Exit `6` | Narrow the query and reduce `--limit`. |
95
+ | Exit `7` | Rewrite with alternate Chinese terms or broaden to Bocha/Zhihu global search. |
96
+
97
+ When one provider fails, continue with configured alternatives if the user asked for research rather than debugging.
98
+
99
+ ## Guardrails
100
+
101
+ - Do not scrape browsers or websites when a Findo provider can answer the task.
102
+ - Do not use `--filter` or `--search-db` outside `findo zhihu web`.
103
+ - Do not treat `findo sources --json` as proof that credentials work; it is only source inventory.
104
+ - Do not present one provider's output as verified fact when sources conflict.
105
+ - Do not expand a narrow question into broad trend research unless the user asks for topic discovery.
@@ -0,0 +1,17 @@
1
+ [
2
+ {
3
+ "id": 1,
4
+ "prompt": "搜一下知乎,帮我找 10 个反直觉、颠覆认知的程序员话题,看看热门回答都在说什么。",
5
+ "expected": "Uses findo zhihu or findo zhihu web with JSON output, summarizes topic candidates with sources, and separates evidence from inference."
6
+ },
7
+ {
8
+ "id": 2,
9
+ "prompt": "帮我检查当前 findo 是否已经配置好,分别用最小 limit 测一下知乎、Bocha 和火山引擎能不能正常返回,但不要读取或输出任何密钥。",
10
+ "expected": "Checks version and redacted config, runs minimal provider smoke calls with --limit 1, reports provider statuses, and avoids reading or exposing secrets."
11
+ },
12
+ {
13
+ "id": 3,
14
+ "prompt": "我想调研一个中文互联网话题,先用 Bocha 查全网,再用火山引擎给一个直答,最后告诉我哪些结论不确定。",
15
+ "expected": "Runs narrow Bocha and Volcengine queries with --json, cross-checks claims, reports URLs and uncertainty, and preserves provider failures if any."
16
+ }
17
+ ]