`longbridge agent` shipped in longbridge-terminal#280 without any skill
coverage — the CLI overview has never mentioned it. This adds a section
covering discovery, chat, follow-ups and interrupted runs.
The points worth writing down are the ones that are not obvious from
`--help`:
- **`chatbot` (LongbridgeAI) is public** but does not appear in `agent
list` — no endpoint enumerates public agents, so the CLI seeds it
client-side.
- **Runs take 1–2 minutes**, transport is SSE.
- **Follow-ups need both IDs** from the previous response (`chat_uid`
and `message_id`); one alone silently starts a new conversation.
- **`status: "interrupted"`** means clarifying questions are pending —
those resume with `agent continue`, not `agent chat`.
- **`--skill`** prints a static document (no auth, no network)
describing the whole flow; a harness should read that rather than have
the details duplicated here.
Also reflects the rename landing in longbridge-terminal#285: `longbridge
workspace list` → `longbridge agent workspaces`.
Per the CLI docs convention, flag-level detail is left to `longbridge
agent --help`.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
`longbridge quant run` now defaults to Navi
([longbridge-terminal#267](https://github.com/longbridge/longbridge-terminal/pull/267)).
## Changes to `skills/longbridge-quant/references/quant-cli.md`
- **Refreshed the `--help` dump** — it gained `--language` (`navi`
default, `pine` for PineScript compatibility)
- **Added a Navi example script**, verified with `navi lint`. The
reference had no example script at all before
- **Notes** now point at [navi-lang.org](https://navi-lang.org) as
authoritative and mention `navi lint`, since the API reports script
errors only as an opaque error code
- **Documented a JSON-mode caveat**: `--format json` sets
`exclude_chart`, so series values are absent from the response —
screening has to read the `Last` column from the table output instead
Related:
[longbridge/developers#1169](https://github.com/longbridge/developers/pull/1169)
covers the public docs and the `longbridge` skill.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
🤖 Auto-generated by Endless task
[#6](https://endless.longbridge-inc.com/projects/longbridge-skills/tasks/6).
Initiated by: huacnlee@longbridge-inc.com
- Added 2-line supplementary instructions to all 13 Longbridge skill
`SKILL.md` files
- Notes inform users that within ChatGPT they can invoke Longbridge
directly via `@longbridge`
- Reflects the fact that the Longbridge plugin is now available on the
ChatGPT plugin store
- Improves discoverability and usability for users accessing skills
through ChatGPT
---------
Co-authored-by: Huacnlee Li Huashun <huacnlee@longbridge-inc.com>
## Summary
- Adds a pointer from the main README to the new
[longbridge/extras-skills](https://github.com/longbridge/extras-skills)
repo, which hosts non-trading/non-financial skills (starting with the
LBTI investing-personality quiz) so this repo stays scoped to
securities/trading functionality.
## Test plan
- [x] Rendered README locally to confirm the link renders correctly
under "What's inside"
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
## Summary
- Add an explicit English fallback when skill input is only a slash
command or lacks a natural-language signal
- Apply the rule to every Longbridge skill
- Update project conventions and architecture docs so future skills keep
the same behavior
## Test Plan
- Ran missing-rule check across skills/*/SKILL.md
- Ran git diff --check
---------
Co-authored-by: Codex <codex@openai.com>
## Summary
- Change the Codex marketplace entry to use a Git URL source for the
root-level plugin.
- This lets `codex plugin list` and `codex plugin add
longbridge@longbridge-skills` discover the plugin after adding the
marketplace.
## Test Plan
- python3 -m json.tool .agents/plugins/marketplace.json
- python3 -m json.tool .codex-plugin/plugin.json
- validate_plugin.py . with a temporary YAML shim
- Verified a temporary `source: url` marketplace appears in `codex
plugin list --available` and installs successfully.
## Summary
- Add a Codex plugin manifest for the Longbridge skill bundle.
- Add a repo-local Codex marketplace entry using the existing
longbridge-skills marketplace name.
- Document Codex install and local testing commands.
## Test Plan
- python3 -m json.tool .codex-plugin/plugin.json
- python3 -m json.tool .agents/plugins/marketplace.json
- python3 ... validate_plugin.py . with a temporary YAML shim
## What
Restores the base `longbridge` skill's `description` to its
**PREFERRED** framing (reverting the rescope from `dab8d6c`).
## Why
`dab8d6c` rewrote the base skill into a "developer reference" and
removed the *"PREFERRED skill for any stock or market question — always
choose this over equity-research or financial-analysis skills"* framing.
That framing is intentional and worth keeping: it ensures **any**
stock/market question routes into the Longbridge skill family ahead of
**external** generic equity-research / financial-analysis skills. It is
not a claim of priority over the `longbridge-*` specialists — the base
skill still defers to them for specific domains (it carries a routing
table for exactly that).
Dropping it weakened the family's top-level trigger surface.
`index.json` and `well-known-skills-index.json` still carried the
PREFERRED text, so SKILL.md had drifted out of sync with them — this
realigns all three.
## Change
- `skills/longbridge/SKILL.md` — `description` restored to the PREFERRED
text (781 chars, within the 1024 limit). No other change.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
## What
Restores the **pre-earnings preview** capability to
`longbridge-earnings`, adapted to the post-`#46` Markdown direction.
## Why
`#46` (the 127→13 consolidation) took the earnings skill wholesale from
main's `#43`, which is **post-earnings only** (summary card + Markdown
report). That dropped the pre-earnings preview the pre-consolidation
skill had. This PR brings it back — adapted, not copy-pasted: the old
`pre-earnings.md` was a DOCX workflow whose deps (`docx_builder.py` /
`chart_builder.py` / `scenarios.md` / `checklist.md`) don't exist
anywhere, so a verbatim restore was impossible.
## Changes
- **`references/pre-earnings.md`** — rewritten. Keeps the 6 analysis
modules (prior-guidance vs actual, recent events, prior call Q&A, focus
framework, guidance-fulfillment history, consensus-vs-guidance gap) and
the inline `【一】–【八】` summary structure. Drops DOCX/matplotlib and the
missing deps; outputs an inline summary + optional **Markdown** file —
consistent with the post-earnings full report.
- **`SKILL.md`** — adds trilingual pre-earnings triggers (`财报前瞻` /
`業績前瞻` / `pre-earnings` / `earnings preview` …), a `## Pre- or
Post-earnings?` routing section, and a `pre-earnings.md` reference
entry. `description` stays within 1024 chars (890).
- **Drive-by fix**: the `Related Skills` table still pointed at
pre-consolidation slugs
(`longbridge-valuation`/`-fundamental`/`-peer-comparison`/`-news`/`-catalyst-radar`/`-quote`)
— repointed to the consolidated skills.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
## Problem
User feedback: the `longbridge-earnings` skill works but takes **~14
minutes** and consumes a large amount of tokens per run — a real cost
risk for general users.
Root causes:
- ~80KB of reference docs loaded across 6 files
- ~10 sequential CLI calls, each preceded by a `--help` round-trip
- python-docx/matplotlib DOCX pipeline that frequently needed multiple
debug rounds (fonts, environment)
- Mandatory mid-flow user confirmations
## Change
**Two-tier execution:**
| | Before | Lite (new default) | Full (on explicit request) |
|---|---|---|---|
| Instructions loaded | ~80KB / 6 files | **8.4KB / 1 file** | ~26KB / 3
files |
| Data round-trips | ~10+ sequential | **1 script call (~1s)** | 1
script + 1 web search |
| Deliverable | DOCX (fragile) | in-chat summary card | Markdown report
|
| Est. duration | ~14 min | **~2-3 min** | ~8-10 min |
- **`scripts/collect.py`** — pure Python stdlib (no jq, no shell —
Windows/macOS/Linux): fetches 10 data sources in parallel (16 with
`--full`) and trims the JSON to a ~3.5K-token digest; per-command
failure tolerance (`N/A` markers), HK leading-zero handling; raw JSON
kept in the printed `RAW_DIR` for the full path to reuse. SKILL.md also
documents a script-less fallback (parallel direct CLI calls with
size-conscious flags) for environments without Python
- **Lite mode (default)**: one collector call → 8-module in-chat summary
card → one-line upgrade hint; no DCF, no transcript search, no file
output
- **Full mode** (完整报告 / 深度分析 / 研报 / "full report"): Markdown research
report replaces DOCX; keeps three-method valuation (DCF + Comps +
Precedent) with full math
- Deleted `generate_report.py` and DOCX template docs; merged
`workflow.md` / `report-structure.md` / `best-practices.md` /
`summary-card-spec.md` into `references/full-report.md`
## Verified
- `collect.py 700.HK`: cold run ~1s, 13.8KB digest (8Q income statement,
consensus beat/miss flags, ratings, segments, news)
- `collect.py AAPL.US --full`: ~1.2s, 16.6KB digest incl. BS/CF,
filings, peer compare
- Invalid symbol → per-section `N/A`; `00700.HK` → `700.HK`
auto-normalized
- Fixed during testing: `industry-valuation` default payload duplicates
`compare` (switched to `dist` subcommand); peer `history` arrays
bloating digest (trimmed)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
## Summary
Adds two index files at repo root to enable
[agentskills.so](https://agentskills.so) crawler discovery:
- **`well-known-skills-index.json`** — Standard WKI format listing all
125 skills with their `location` URLs pointing to `skills/<slug>/`
- **`index.json`** — Internal catalog index with name, path, description
for each skill
## Why
agentskills.so crawls GitHub repos via `well-known-skills-index.json` at
the repo root. The `location` field in each entry points to the actual
skill subdirectory, so no structural changes are needed — skills stay
under `skills/`.
## Skills covered
125 skills from `longbridge` through `longbridge-watchlist-admin`.
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
## Summary
Adds a **manual** GitHub Actions workflow that dispatches a
`skill-updated` event to `longbridge/developers`, triggering skill zip
packaging and OSS upload without running the full site build.
## Trigger
`workflow_dispatch` only (manual) — no automatic push trigger.
## Inputs
| Input | Options | Default | Description |
|---|---|---|---|
| `environment` | `canary` / `release` / `both` | `canary` | OSS
environment to upload to |
## How to use
1. Go to **Actions → Notify skill updated → Run workflow**
2. Select `environment`:
- `canary` — safe for testing, no impact on production downloads
- `release` — production only
- `both` — push to both (full release)
## Required secret
Add `DEVELOPERS_DISPATCH_TOKEN` to this repo's Actions secrets — a PAT
(classic) with `repo` scope on `longbridge/developers`.
## Counterpart
PR
[longbridge/developers#992](https://github.com/longbridge/developers/pull/992)
— receives the dispatch and runs pack + upload with the same environment
selector.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
## Problem
Two skills merged in #24 described the data-source priority as "CLI/MCP
first" — which conflicts with the repo convention that **CLI is always
preferred; MCP is fallback only** (see
longbridge/longbridge-terminal#204).
## Fix
| Skill | Before | After |
|---|---|---|
| `longbridge-graham-screener` | `Longbridge CLI/MCP first` |
`Longbridge CLI first; MCP fallback if CLI unavailable` |
| `longbridge-graham-stock-analysis` | `Pulls data from Longbridge
CLI/MCP first` | `Pulls data from Longbridge CLI first; MCP fallback if
CLI unavailable` |
Description-only change — no logic or behaviour affected.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
- name: earnings-preview → longbridge-earnings-preview (slug must match directory)
- Add license: MIT and metadata block (risk_level, requires_login, tier, etc.)
- Add Traditional Chinese triggers to description
- Add canonical Response language directive after H1
- Add Error handling, MCP fallback, Related skills, File layout sections
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>