#249 by GitHub stars
OpenSenseNova/SenseNova-Skills
Modular SenseNova skills for building AI-powered office assistants and productivity workflows
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/sn-code-video/SKILL.md
Week of Nov 2, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 95db9cf340f0
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-cell-coloring/category-coloring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-cell-coloring/duplicate-value-coloring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-cell-coloring/outlier-coloring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-cell-coloring/threshold-cell-coloring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-cell-coloring/top-value-coloring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-conditional-formatting/data-bar-formatting/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-analysis/comparison-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-analysis/group-by-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-analysis/kpi-metric-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-analysis/pivot-table-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-analysis/time-series-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-analysis/trend-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-cleaning/duplicate-removal/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-cleaning/invalid-data-cleaning/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-cleaning/missing-value-handling/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-cleaning/numeric-format-normalization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-cleaning/outlier-detection/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-cleaning/text-normalization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-filtering/category-filtering/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-filtering/condition-filtering/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-filtering/range-filtering/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-filtering/threshold-filtering/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-statistics/basic-statistics/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-statistics/category-statistics/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-statistics/grouped-statistics/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-statistics/percentage-calculation/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-visualization/bar-chart-visualization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-visualization/histogram-visualization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-visualization/line-chart-visualization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-visualization/pie-chart-visualization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-visualization/scatter-plot-visualization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-data-visualization/stacked-chart-visualization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-reading/large-excel-reading/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-reading/multi-file-reading/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-reading/multi-sheet-reading/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-reading/range-reading/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-reading/single-sheet-reading/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-reading/specific-sheet-reading/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-reading/structured-header-reading/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-result-export/chart-embedded-export/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-result-export/formatted-export/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-result-export/report-generation-export/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-result-export/single-sheet-export/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-excel-workflow/capability/excel-table-styling/table-theme-styling/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-image-caption/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-large-file-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-non-spreadsheet-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-non-spreadsheet-analysis/capability/pdf-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-non-spreadsheet-analysis/capability/ppt-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-da-non-spreadsheet-analysis/capability/word-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-deep-research/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-deepresearch-cli/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-image-base/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-image-doctor/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-image-imitate/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-image-resume/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-infographic/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-md-to-html-report/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-motion-html/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-ppt-creative/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-ppt-dazzle/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-ppt-doctor/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-ppt-entry/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-ppt-standard/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-ppt-story/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-ppt-tools/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-ppt-workbench/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-prepare-citations/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-proactive-agent/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-report-format-discovery/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-research-report/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-academic/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-code/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-finance/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-image/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Local scripts → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Local scripts
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-market-cn/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-social-cn/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-social-en/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-social-media/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-search-year-report/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-team-harness/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Network or broad shell
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
skills/sn-update/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
0ee34f37b969 → 95db9cf340f0
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Instructions only
First observation → 0ee34f37b969
No earlier version was observed for comparison.
Heat
6.3- Star growth, last 7 daysAhead of 79% of tracked repositories
- Star growth, last 24 hoursAhead of 85% of tracked repositories
- Rank movement, last 7 daysAhead of 47% of tracked repositories
- Commits, last 30 daysAhead of 73% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- sn-code-video
skills/sn-code-video - sn-da-excel-workflow
skills/sn-da-excel-workflow - large-file-parquet-analysis-and-highlight
skills/sn-da-excel-workflow/capability/excel-cell-coloring/category-coloring - excel-conditional-comparison-and-large-file-processing
skills/sn-da-excel-workflow/capability/excel-cell-coloring/duplicate-value-coloring - excel-outlier-detection-and-highlighting
skills/sn-da-excel-workflow/capability/excel-cell-coloring/outlier-coloring - large-file-conditional-formatting
skills/sn-da-excel-workflow/capability/excel-cell-coloring/threshold-cell-coloring - top-value-coloring
skills/sn-da-excel-workflow/capability/excel-cell-coloring/top-value-coloring - numeric-extraction-and-distribution-analysis
skills/sn-da-excel-workflow/capability/excel-conditional-formatting/data-bar-formatting - categorical-comparison-analysis
skills/sn-da-excel-workflow/capability/excel-data-analysis/comparison-analysis - group-by-analysis
skills/sn-da-excel-workflow/capability/excel-data-analysis/group-by-analysis - large-file-kpi-analysis
skills/sn-da-excel-workflow/capability/excel-data-analysis/kpi-metric-analysis - pivot-table-cross-analysis
skills/sn-da-excel-workflow/capability/excel-data-analysis/pivot-table-analysis - time-series-and-categorical-analysis
skills/sn-da-excel-workflow/capability/excel-data-analysis/time-series-analysis - trend-analysis
skills/sn-da-excel-workflow/capability/excel-data-analysis/trend-analysis - excel-multi-sheet-threshold-analysis
skills/sn-da-excel-workflow/capability/excel-data-cleaning/duplicate-removal - invalid-data-cleaning
skills/sn-da-excel-workflow/capability/excel-data-cleaning/invalid-data-cleaning - excel-smart-analysis-and-cleaning
skills/sn-da-excel-workflow/capability/excel-data-cleaning/missing-value-handling - numeric-format-normalization
skills/sn-da-excel-workflow/capability/excel-data-cleaning/numeric-format-normalization - outlier-detection-and-quality-assessment
skills/sn-da-excel-workflow/capability/excel-data-cleaning/outlier-detection - text-normalization-and-large-file-processing
skills/sn-da-excel-workflow/capability/excel-data-cleaning/text-normalization - category-filtering-and-difficulty-analysis
skills/sn-da-excel-workflow/capability/excel-data-filtering/category-filtering - condition-filtering-and-large-file-optimization
skills/sn-da-excel-workflow/capability/excel-data-filtering/condition-filtering - excel-conditional-filtering-optimization
skills/sn-da-excel-workflow/capability/excel-data-filtering/range-filtering - excel-threshold-analysis-and-styling
skills/sn-da-excel-workflow/capability/excel-data-filtering/threshold-filtering - excel-basic-statistics-and-routing
skills/sn-da-excel-workflow/capability/excel-data-statistics/basic-statistics - category-statistics
skills/sn-da-excel-workflow/capability/excel-data-statistics/category-statistics - grouped-statistics
skills/sn-da-excel-workflow/capability/excel-data-statistics/grouped-statistics - dynamic-percentage-and-large-file-analysis
skills/sn-da-excel-workflow/capability/excel-data-statistics/percentage-calculation - excel-bar-chart-visualization
skills/sn-da-excel-workflow/capability/excel-data-visualization/bar-chart-visualization - statistical-distribution-and-outlier-analysis
skills/sn-da-excel-workflow/capability/excel-data-visualization/histogram-visualization - line-chart-visualization
skills/sn-da-excel-workflow/capability/excel-data-visualization/line-chart-visualization - pie-chart-data-analysis
skills/sn-da-excel-workflow/capability/excel-data-visualization/pie-chart-visualization - excel-statistical-viz-large-file
skills/sn-da-excel-workflow/capability/excel-data-visualization/scatter-plot-visualization - stacked-chart-visualization
skills/sn-da-excel-workflow/capability/excel-data-visualization/stacked-chart-visualization - large-excel-analysis-and-formatting
skills/sn-da-excel-workflow/capability/excel-reading/large-excel-reading - multi-file-excel-parquet-analysis
skills/sn-da-excel-workflow/capability/excel-reading/multi-file-reading - multi-sheet-reading-and-analysis
skills/sn-da-excel-workflow/capability/excel-reading/multi-sheet-reading - range-reading-and-large-file-analysis
skills/sn-da-excel-workflow/capability/excel-reading/range-reading - single-sheet-reading-and-analysis
skills/sn-da-excel-workflow/capability/excel-reading/single-sheet-reading - excel-multi-sheet-dynamic-analysis
skills/sn-da-excel-workflow/capability/excel-reading/specific-sheet-reading - excel-large-file-processing-and-cleaning
skills/sn-da-excel-workflow/capability/excel-reading/structured-header-reading - chart-embedded-export
skills/sn-da-excel-workflow/capability/excel-result-export/chart-embedded-export - formatted-export-with-parquet
skills/sn-da-excel-workflow/capability/excel-result-export/formatted-export - excel-data-analysis-and-report-generation
skills/sn-da-excel-workflow/capability/excel-result-export/report-generation-export - excel-sheet-filter-export
skills/sn-da-excel-workflow/capability/excel-result-export/single-sheet-export - dynamic-large-file-parquet-analysis
skills/sn-da-excel-workflow/capability/excel-table-styling/table-theme-styling - sn-da-image-caption
skills/sn-da-image-caption - sn-da-large-file-analysis
skills/sn-da-large-file-analysis - sn-da-non-spreadsheet-analysis
skills/sn-da-non-spreadsheet-analysis - pdf-analysis
skills/sn-da-non-spreadsheet-analysis/capability/pdf-analysis - ppt-analysis
skills/sn-da-non-spreadsheet-analysis/capability/ppt-analysis - word-analysis
skills/sn-da-non-spreadsheet-analysis/capability/word-analysis - sn-deep-research
skills/sn-deep-research - sn-deepresearch-cli
skills/sn-deepresearch-cli - sn-image-base
skills/sn-image-base - sn-image-doctor
skills/sn-image-doctor - sn-image-imitate
skills/sn-image-imitate - sn-image-resume
skills/sn-image-resume - sn-infographic
skills/sn-infographic - sn-md-to-html-report
skills/sn-md-to-html-report - sn-motion-html
skills/sn-motion-html - sn-ppt-creative
skills/sn-ppt-creative - sn-ppt-dazzle
skills/sn-ppt-dazzle - sn-ppt-doctor
skills/sn-ppt-doctor - sn-ppt-entry
skills/sn-ppt-entry - sn-ppt-standard
skills/sn-ppt-standard - sn-ppt-story
skills/sn-ppt-story - sn-ppt-tools
skills/sn-ppt-tools - sn-ppt-workbench
skills/sn-ppt-workbench - sn-prepare-citations
skills/sn-prepare-citations - sn-proactive-agent
skills/sn-proactive-agent - sn-report-format-discovery
skills/sn-report-format-discovery - sn-research-report
skills/sn-research-report - sn-search-academic
skills/sn-search-academic - sn-search-code
skills/sn-search-code - sn-search-finance
skills/sn-search-finance - sn-search-image
skills/sn-search-image - sn-search-market-cn
skills/sn-search-market-cn - sn-search-social-cn
skills/sn-search-social-cn - sn-search-social-en
skills/sn-search-social-en - sn-search-social-media
skills/sn-search-social-media - sn-search-year-report
skills/sn-search-year-report - sn-team-harness
skills/sn-team-harness - sn-update
skills/sn-update
How it works
sn-code-video
When your agent uses it
Create and revise code-driven videos with Canvas, SVG, HTML/CSS, Three.js, Remotion, Manim, or p5.js, including sound, deterministic frame capture, visual review, and MP4 verification. Use for rendered explainers, procedural animations, motion graphics, promos, and music-synchronized films; not for general web apps, scroll-driven HTML stories, or footage generation with video models.
What it loads into context
Frontmatter
90 tokensAlways available to the agent
SKILL.md
5,071 tokensWhen the skill is activated
Reference documents
17,031 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Setup and paths
- 0. Read the craft guides you need
- 1. Finish the film
- 2. Turn the brief into a spec
- 3. Time is the only input
- 4. Capture and encode
- 5. Look at the frames
- 6. Verify before delivery
- 7. Failures seen most often
- 8. Long films (1–2 minutes)
- 9. Seamless loops
- 10. Sound
- 11. Assets, fonts and tools
Scripts executed separately
scripts/audio_check.shscripts/capture.mjsscripts/check_video.shscripts/contact_sheet.shscripts/sync_check.pyscripts/synth.pyscripts/tts.py
Files
../../docs/sn-code-video.mddoc5,848 bytes../../docs/sn-code-video_cn.mddoc5,543 bytesSKILL.mdcore21,272 bytesSKILL.mdcore21,272 bytesSKILL.mdcore21,272 bytesSKILL.mdcore21,272 bytesSKILL.mdcore21,272 bytesSKILL.mdcore21,272 bytesSKILL.mdcore21,272 bytesSKILL.mdcore21,272 bytesreferences/character-and-creature-motion.mddoc5,074 bytesreferences/explainer-diagrams.mddoc8,096 bytesreferences/motion-graphics-and-promos.mddoc6,124 bytesreferences/music-and-beat-sync.mddoc5,412 bytesreferences/simulations-and-generative.mddoc7,503 bytesreferences/sound-design-and-narration.mddoc10,630 bytesreferences/stylized-looks.mddoc7,750 bytesreferences/threejs-scenes-and-cameras.mddoc7,817 bytesrequirements.txtdoc391 bytesscripts/audio_check.shruns2,137 bytesscripts/capture.mjsruns4,506 bytesscripts/check_video.shruns3,026 bytesscripts/contact_sheet.shruns792 bytesscripts/sync_check.pyruns3,003 bytesscripts/synth.pyruns8,363 bytesscripts/tts.pyruns4,338 bytes
Read SKILL.md
# SN Code Video
A code video is a program `frame(t) → image`, sampled at `t = i / fps` and encoded. Almost every failure in this kind of work is one of four things: the film is never finished, the picture depends on wall-clock time, nobody looked at the frames, or the file does not match the brief. This skill prevents those four.
## Setup and paths
Use a separate project folder for the video source, `SPEC.md`, build files, and outputs. Resolve `SKILL_DIR` to the absolute directory containing this `SKILL.md`, whether installed in the agent's skills directory or used from this repository. Run project commands from the video project folder; invoke bundled scripts through `"$SKILL_DIR/scripts/..."` so they do not depend on the current working directory. Set `SKILL_DIR` again in each shell session if needed.
Requirements: Node.js 18+ for browser capture, Python 3, FFmpeg/ffprobe with libx264 and AAC, and fonts covering the requested language. Install Playwright (with Chromium) or Puppeteer in the **video project**; the capture helper resolves its packages there first. Python audio dependencies are listed in `requirements.txt`; edge-tts needs network access, and faster-whisper needs downloaded model weights for transcription checks. Install only the tools required by the chosen renderer and audio workflow. Setup and invocation examples: [English guide](../../docs/sn-code-video.md) / [中文指南](../../docs/sn-code-video_cn.md) in the source repository; these repository guides are not required when the skill folder is installed on its own.
Deliver the playable MP4, source code and reproduction commands, `SPEC.md`, `VERIFY.md`, and a contact sheet. Audio stems and timing data belong in the project when sound is used.
## 0. Read the craft guides you need
View the complete source on GitHubsn-da-excel-workflow
When your agent uses it
Excel 数据分析多步编排器。覆盖:(1) 读取多 Sheet Excel 文件并统计行数,(2) 大文件检测(≥10k 行自动 Parquet 优化),(3) 数据清洗(缺失值、文本标准化、无效字符),(4) 条件筛选与分类提取,(5) 跨 Sheet 统计聚合,(6) 导出 Excel/CSV 并提供下载链接。覆盖从数据读取到报告生成全流程,按步骤编排 capability 子 skill。**遇到以下任一情况就主动使用本 skill,不要自行写几行 pandas 就回答**:①用户出现触发词:Excel 分析 / 表格分析 / 数据分析 / 数据清洗 / 数据统计 / 数据筛选 / 数据可视化 / 数据导出 / 汇总统计 / 透视表 / 分组统计 / 交叉分析 / 趋势分析 / 对比分析 / 异常值检测 / 去重 / 缺失值处理 / Excel 报告 / 生成报表 / analyze Excel / data analysis / data cleaning / pivot table;②用户上传或指定了 .xlsx / .xls / .csv 文件并要求分析、清洗、统计或可视化;③任务涉及多 Sheet 读取、条件筛选、分类汇总、图表生成中的任意一项;④用户要求导出带格式的 Excel 报告或下载链接。仅不用于:不涉及表格数据的纯文本处理、图片分析(使用 sn-da-image-caption)、单个公式计算的简单问答。
What it loads into context
Frontmatter
353 tokensAlways available to the agent
SKILL.md
3,476 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Key rules
- CJK Font Setup (mandatory for charts)
- How to load sub-skills
- Available capability sub-skills
Files
SKILL.mdcore13,272 bytesSKILL.mdcore13,272 bytesSKILL.mdcore13,272 bytesSKILL.mdcore13,272 bytesSKILL.mdcore13,272 bytesSKILL.mdcore13,272 bytesSKILL.mdcore13,272 bytesSKILL.mdcore13,272 bytes
Read SKILL.md
# Excel Data Analysis Workflow
End-to-end workflow for structured Excel analysis. Each step maps to a
capability sub-skill that can be loaded for detailed patterns.
## Workflow
### Step 1 — Count rows across all sheets (lightweight, no full load)
Count rows per sheet **without loading data into memory**. Use openpyxl
`read_only` mode — this works for any file size.
```python
import openpyxl, gcView the complete source on GitHublarge-file-parquet-analysis-and-highlight
When your agent uses it
当Excel文件总行数超过1万行时,通过转换为Parquet格式提升读取性能,提取目标指标并计算最大值,最后将结果输出为Excel并对特定行进行高亮标注。
What it loads into context
Frontmatter
60 tokensAlways available to the agent
SKILL.md
907 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,444 bytesSKILL.mdcore3,444 bytesSKILL.mdcore3,444 bytesSKILL.mdcore3,444 bytes
Read SKILL.md
# Skill Steps
Step1 读取文件并统计所有 sheet 的行数,汇总后打印总行数,用于判断数据规模是否需要启用大文件处理。
```python
import pandas as pd
file_path = "input_data.xlsx"
# 读取所有sheet并统计总行数
xls = pd.ExcelFile(file_path)
sheet_names = xls.sheet_names
print(f"Sheet列表: {sheet_names}")
total_rows = 0View the complete source on GitHubexcel-conditional-comparison-and-large-file-processing
When your agent uses it
对比Excel多表中的特定系数并对异常值进行颜色标记。
What it loads into context
Frontmatter
34 tokensAlways available to the agent
SKILL.md
826 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,103 bytesSKILL.mdcore3,103 bytesSKILL.mdcore3,103 bytes
Read SKILL.md
# excel-conditional-comparison-and-large-file-processing
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 提取不同Sheet中特定维度(如“B1层”)的数值,并进行跨表逻辑对比。
```python
# 定义提取逻辑:定位目标行(如包含'B1'的行)并获取其关联的系数
def extract_target_value(df, target_label='B1', label_col_idx=0, offset_row=1, value_col_idx=2):
"""
在指定列搜索标签,并返回其相对偏移位置的数值
"""
extracted_values = []
for idx, row in df.iterrows():
if str(row.iloc[label_col_idx]).strip() == target_label:View the complete source on GitHubexcel-outlier-detection-and-highlighting
When your agent uses it
识别 Excel 中的超限数值与错误单元格并进行高亮标注。
What it loads into context
Frontmatter
35 tokensAlways available to the agent
SKILL.md
1,058 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore4,138 bytesSKILL.mdcore4,138 bytesSKILL.mdcore4,138 bytesSKILL.mdcore4,138 bytesSKILL.mdcore4,138 bytes
Read SKILL.md
# Outlier_Coloring
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 使用正则表达式提取限值,并结合上下文逻辑识别总传热系数超限的行。
```python
import re
exceed_rows = []
target_col = 0 # 假设特征列在第一列
value_col = 8 # 假设数值列在第九列
for i, row in df.iterrows():
row_str = str(row.iloc[target_col]) if pd.notna(row.iloc[target_col]) else ""View the complete source on GitHublarge-file-conditional-formatting
When your agent uses it
根据Excel总行数自动切换Parquet加速读取,计算特定维度的时间序列平均值,并使用openpyxl输出带有条件格式(如低于均值标绿)和自定义样式的分析报告。
What it loads into context
Frontmatter
65 tokensAlways available to the agent
SKILL.md
1,188 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore4,435 bytesSKILL.mdcore4,435 bytesSKILL.mdcore4,435 bytesSKILL.mdcore4,435 bytes
Read SKILL.md
## Skill Steps
> **Note**: This sub-skill covers one step of the Excel analysis workflow. For the full pipeline (file reading, row counting, large-file optimization, export), see the parent workflow SKILL.md.
Step1 读取文件并统计所有 sheet 的行数,汇总后打印总行数,用于判断是否需要大文件加速。
```python
import pandas as pd
import openpyxl
file_path = "input_data.xlsx"
# 获取所有sheet名称
wb = openpyxl.load_workbook(file_path, read_only=True)View the complete source on GitHubtop-value-coloring
When your agent uses it
根据数据规模动态选择处理策略,对多表数据进行合并、统计筛选,并利用 openpyxl 实现关键指标的自动化样式高亮与格式化导出。
What it loads into context
Frontmatter
50 tokensAlways available to the agent
SKILL.md
1,089 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,802 bytesSKILL.mdcore3,802 bytesSKILL.mdcore3,802 bytesSKILL.mdcore3,802 bytes
Read SKILL.md
Step1 提取并合并多个 Sheet 中的关键维度数据,进行数据清洗、类型转换及 Top-N 筛选。
```python
# 示例:合并两个 Sheet 的数据
# 读取 Sheet1 并清洗
df1 = pd.read_excel(file_path, sheet_name='Sheet1', header=None)
# 假设 group_col 在第0列,value_col 在第2列
data1 = df1.iloc[20:, [0, 2]].copy()
data1.columns = ['group_col', 'value_col_1']
data1['value_col_1'] = pd.to_numeric(data1['value_col_1'], errors='coerce')
data1['group_col'] = data1['group_col'].ffill() # 处理合并单元格产生的缺失
# 读取 Sheet2 并清洗
df2 = pd.read_excel(file_path, sheet_name='Sheet2', header=None)
data2 = df2.iloc[5:, [0, 1]].copy()View the complete source on GitHubnumeric-extraction-and-distribution-analysis
When your agent uses it
从带单位的字符串列中提取数值并清洗,生成包含直方图、饼图、条形图和累积分布图的多维度综合分布可视化图表,用于展示数据的集中趋势与分布特征。
What it loads into context
Frontmatter
71 tokensAlways available to the agent
SKILL.md
1,242 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore4,204 bytesSKILL.mdcore4,204 bytesSKILL.mdcore4,204 bytesSKILL.mdcore4,204 bytes
Read SKILL.md
# Numeric_Extraction_and_Distribution_Analysis
## Skill Steps
Step1 从原始数据中提取目标列,清理无效和空值数据,并安全地将带单位的字符串转换为数值类型
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 配置中英文字体,避免图表乱码
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
View the complete source on GitHubcategorical-comparison-analysis
When your agent uses it
对两类分类数据进行对比分析,统计数量差异与比例关系并生成可视化图表。
What it loads into context
Frontmatter
35 tokensAlways available to the agent
SKILL.md
1,041 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytesSKILL.mdcore3,666 bytes
Read SKILL.md
# categorical-comparison-analysis
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 读取文件并统计所有 sheet 的总行数,评估是否需要进行大文件优化处理。
```python
import pandas as pd
from pandas import read_excel
from pathlib import Path
# 统计所有 sheet 的行数以决定处理策略
file_path = "input_data.xlsx"
sheet_names = pd.ExcelFile(file_path).sheet_names
total_rows = 0View the complete source on GitHubgroup-by-analysis
When your agent uses it
对多 Sheet 的 Excel 文件进行行数统计、大文件 Parquet 转换预处理、数据清洗及分组聚合分析,并生成带样式标记的统计表与可视化图表。
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
991 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,654 bytesSKILL.mdcore3,654 bytesSKILL.mdcore3,654 bytesSKILL.mdcore3,654 bytesSKILL.mdcore3,654 bytes
Read SKILL.md
Step1 对数据进行清洗与预处理,包括处理合并单元格、正则过滤以及分类映射。
```python
import re
# 1. 处理合并单元格:向前填充
target_col = 'category_column'
df[target_col] = df[target_col].ffill()
# 2. 正则清洗:去除无效字符或筛选特定格式
def clean_text(text):
if pd.isna(text): return text
return re.sub(r'[^\w\s]', '', str(text)).strip()
df[target_col] = df[target_col].apply(clean_text)View the complete source on GitHublarge-file-kpi-analysis
When your agent uses it
根据数据量自动选择读取策略(大文件转Parquet),提取关键指标进行单位一致性验证与排序分析,并输出可下载的结果表格。
What it loads into context
Frontmatter
46 tokensAlways available to the agent
SKILL.md
686 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore2,594 bytesSKILL.mdcore2,594 bytesSKILL.mdcore2,594 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 提取关键指标,进行物理量/指标的单位一致性验证计算,并对核心业务指标进行降序排列。
```python
# 1. 物理量/指标单位一致性验证与计算 (保留公式结构示例)
col_numerator = 'numerator_col' # 示例:Mx (kN·m)
col_denominator = 'denominator_col' # 示例:Wx (cm³)
col_target = 'target_col' # 示例:sigma (MPa)
if col_numerator in data.columns and col_denominator in data.columns and col_target in data.columns:
# 单位换算示例:统一到标准单位后计算
data['den_converted'] = data[col_denominator] * 1e-6View the complete source on GitHubpivot-table-cross-analysis
When your agent uses it
利用交叉表与热力图对分类数据进行多维度占比分析,适用于奖项分布、绩效评估或市场占有率等结构化数据的清洗与可视化。
What it loads into context
Frontmatter
57 tokensAlways available to the agent
SKILL.md
1,206 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore4,540 bytesSKILL.mdcore4,540 bytesSKILL.mdcore4,540 bytesSKILL.mdcore4,540 bytesSKILL.mdcore4,540 bytesSKILL.mdcore4,540 bytes
Read SKILL.md
Step1 对原始数据进行清洗与重构,处理 Excel 合并单元格导致的缺失值,并筛选核心分析列。
```python
import pandas as pd
def preprocess_pivot_data(file_path, target_cols=['奖项', '项目名称', '成员', '单位']):
"""
清理并重构数据列,处理合并单元格填充。
"""
df = pd.read_excel(file_path)
# 映射通用列名
df.columns = target_cols
# 关键技巧:处理合并单元格。ffill 前需确保数据按原始分类顺序排列
# 假设第一列为分类标签(如奖项名称)View the complete source on GitHubtime-series-and-categorical-analysis
When your agent uses it
对时间序列或分类数据进行多维度趋势分析、百分比清洗、绩效分级建模与预测,并生成高分辨率的可视化综合报告,适用于业务指标监控与预测场景。
What it loads into context
Frontmatter
63 tokensAlways available to the agent
SKILL.md
1,636 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore5,744 bytesSKILL.mdcore5,744 bytesSKILL.mdcore5,744 bytesSKILL.mdcore5,744 bytesSKILL.mdcore5,744 bytesSKILL.mdcore5,744 bytes
Read SKILL.md
## Skill Steps
Step1 加载并检查原始数据,配置中文字体以确保图表正常显示。
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
# 设置中文字体,兼容不同操作系统
plt.rcParams['font.sans-serif'] = ['SimHei', 'WenQuanYi Zen Hei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = FalseView the complete source on GitHubtrend-analysis
When your agent uses it
基于多维度数据进行分级评估与趋势预测,通过设定差异化增长率计算预测值,并生成对比可视化图表,适用于绩效评估、目标设定等场景。
What it loads into context
Frontmatter
57 tokensAlways available to the agent
SKILL.md
1,210 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore4,257 bytesSKILL.mdcore4,257 bytesSKILL.mdcore4,257 bytesSKILL.mdcore4,257 bytesSKILL.mdcore4,257 bytes
Read SKILL.md
Step1 加载数据并配置环境,设置中文字体以确保可视化图表正常显示。
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
# 设置中文字体,优先使用 WenQuanYi Zen Hei,备选 SimHei 和 DejaVu Sans
plt.rcParams['font.sans-serif'] = ['WenQuanYi Zen Hei', 'SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
# 加载数据文件
file_path = 'your_data.xlsx'View the complete source on GitHubexcel-multi-sheet-threshold-analysis
When your agent uses it
统计多Sheet Excel总行数并根据规模选择处理策略,提取特定维度信息进行去重统计,并生成摘要与明细报表。
What it loads into context
Frontmatter
47 tokensAlways available to the agent
SKILL.md
766 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore2,966 bytesSKILL.mdcore2,966 bytesSKILL.mdcore2,966 bytesSKILL.mdcore2,966 bytesSKILL.mdcore2,966 bytes
Read SKILL.md
# Excel_Multi_Sheet_Deduplication
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 加载目标数据表,并进行初步的数据预览与结构检查。
```python
import pandas as pd
file_path = 'input_file.xlsx'
target_sheet = 'Sheet1' # 根据实际情况指定 sheet 名称
# 读取数据,header=None 用于处理无表头或非标准表头文件
df = pd.read_excel(file_path, sheet_name=target_sheet, header=None)
print(f"数据形状: {df.shape}")View the complete source on GitHubinvalid-data-cleaning
When your agent uses it
用于大规模Excel数据的预处理,通过统计总行数判断是否转换为Parquet格式以提升读写效率,并使用正则表达式清洗指定文本列(如仅保留中文字符),最后导出清洗后的文件并提供下载链接。
What it loads into context
Frontmatter
66 tokensAlways available to the agent
SKILL.md
575 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore2,252 bytesSKILL.mdcore2,252 bytesSKILL.mdcore2,252 bytesSKILL.mdcore2,252 bytes
Read SKILL.md
# Invalid_Data_Cleaning
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
## Skill Steps
Step1 根据总行数判断是否数据量过大,若满足条件,则将 Excel 文件转换为 Parquet 格式提升读写效率,再读取数据进行后续分析。
```python
import pandas as pd
file_path = "input_data.xlsx"
parquet_path = "temp_data.parquet"
# 读取 Excel 文件并转换为 Parquet 格式View the complete source on GitHubexcel-smart-analysis-and-cleaning
When your agent uses it
对多 Sheet Excel 进行智能清洗、跨表核对与可视化分析。。
What it loads into context
Frontmatter
33 tokensAlways available to the agent
SKILL.md
1,038 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,542 bytesSKILL.mdcore3,542 bytesSKILL.mdcore3,542 bytesSKILL.mdcore3,542 bytes
Read SKILL.md
Step1 对数据进行深度清洗,包括合并单元格填充(ffill)、正则化文本处理、RGB 颜色分量转换以及异常值识别。
```python
import re
def clean_data(df, target_col):
# 1. 处理合并单元格:向下填充
df[target_col] = df[target_col].ffill()
# 2. 正则清洗:去除数字前缀、特殊字符及首尾空格
def regex_clean(text):
if not isinstance(text, str): return text
text = re.sub(r'^\d+[\.\s\-]+', '', text) # 去除如 "1. " 的前缀
text = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9]', '', text) # 仅保留中英数
return text.strip()View the complete source on GitHubnumeric-format-normalization
When your agent uses it
对 Excel 数据进行数值格式标准化与清洗,支持大规模数据的 Parquet 转换流程,并完成关键指标的合计核对与结果文件导出。
What it loads into context
Frontmatter
48 tokensAlways available to the agent
SKILL.md
673 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore2,603 bytesSKILL.mdcore2,603 bytesSKILL.mdcore2,603 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 对目标列进行数据清洗(去除空值、标准化数值格式),计算合计值,并与指定汇总 Sheet 中的合计行进行精确核对。
```python
target_col = '目标数值列' # 示例:'建筑面积'
summary_sheet_name = 'Summary' # 示例汇总Sheet名
summary_item_col = '项目'
summary_value_col = '数值'
# 数据清洗:去除空值、强制转换为数值格式
df_cleaned = df_processed.dropna(subset=[target_col]).copy()
df_cleaned[target_col] = pd.to_numeric(df_cleaned[target_col], errors='coerce')View the complete source on GitHuboutlier-detection-and-quality-assessment
When your agent uses it
执行全面的异常值检测与数据质量评估,利用 IQR 方法识别异常值并结合偏度、峰度分析数据分布特征,适用于非正态分布数据的预处理阶段。
What it loads into context
Frontmatter
61 tokensAlways available to the agent
SKILL.md
1,448 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore4,750 bytesSKILL.mdcore4,750 bytesSKILL.mdcore4,750 bytesSKILL.mdcore4,750 bytesSKILL.mdcore4,750 bytesSKILL.mdcore4,750 bytes
Read SKILL.md
### Step 1 加载数据并配置环境
```python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
# 设置中英文字体以支持可视化显示 (SimHei 或 WenQuanYi)
plt.rcParams['font.sans-serif'] = ['SimHei', 'WenQuanYi Zen Hei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
# 加载数据
file_path = 'data.xlsx' # 替换为实际文件路径
df = pd.read_excel(file_path)View the complete source on GitHubtext-normalization-and-large-file-processing
When your agent uses it
对Excel文件进行文本标准化清洗(如去除异常前缀、提取纯中文字符等),并,最终输出清洗后的Excel文件并提供下载链接。
What it loads into context
Frontmatter
52 tokensAlways available to the agent
SKILL.md
607 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore2,345 bytesSKILL.mdcore2,345 bytesSKILL.mdcore2,345 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 识别并清洗包含前缀符号的异常数值字段,统一转换为整数类型;同时使用正则表达式清洗文本字段,仅保留 Unicode 范围内的中文字符。
```python
import re
import numpy as np
target_numeric_col = '需要转数字的文本列' # 示例:'获赞'
target_text_col = '需要提取中文的列' # 示例:'收货人'
# 1. 清洗包含前缀符号的数值字段
prefix_patterns = ['.', 'I ', '■ ', '一 ', '_', '. ']View the complete source on GitHubcategory-filtering-and-difficulty-analysis
When your agent uses it
对Excel数据进行自定义分类统计、交叉分析与可视化,并基于多维度指标(如文本长度、术语密度、正则匹配等)进行综合评分与分级,适用于多类别数据分布统计及文本内容难度/质量评估场景。
What it loads into context
Frontmatter
79 tokensAlways available to the agent
SKILL.md
2,099 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore7,580 bytesSKILL.mdcore7,580 bytesSKILL.mdcore7,580 bytesSKILL.mdcore7,580 bytesSKILL.mdcore7,580 bytesSKILL.mdcore7,580 bytesSKILL.mdcore7,580 bytes
Read SKILL.md
## Skill Steps
### Step1 加载数据与环境配置
```python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import re
# 配置中文字体,确保图表正常显示
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans', 'WenQuanYi Zen Hei']
plt.rcParams['axes.unicode_minus'] = False
def load_excel_data(file_path: str, skip_rows: int = 2):View the complete source on GitHubcondition-filtering-and-large-file-optimization
When your agent uses it
根据数据规模动态选择处理策略。
What it loads into context
Frontmatter
22 tokensAlways available to the agent
SKILL.md
833 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore2,923 bytesSKILL.mdcore2,923 bytesSKILL.mdcore2,923 bytes
Read SKILL.md
# condition_filtering
> **Note**: This sub-skill covers one step of the Excel analysis workflow. For the full pipeline (file reading, row counting, large-file optimization, export), see the parent workflow SKILL.md.
Step1 执行多维度数据清洗与条件筛选,包含列名自动识别、RGB 颜色过滤、前缀匹配及正则提取。
```python
# 1. 自动识别同义列名并筛选非空值
target_cols = ['域名', '缩写', 'code', 'domain']
for col in target_cols:
if col in df.columns:
df = df[df[col].notna()]
break
# 2. 基于数值通道的精确筛选(如 RGB 颜色过滤)View the complete source on GitHubexcel-conditional-filtering-optimization
When your agent uses it
根据多维数值条件筛选 Excel 数据并导出结果,支持大规模数据的自动性能优化处理。
What it loads into context
Frontmatter
38 tokensAlways available to the agent
SKILL.md
744 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore2,704 bytesSKILL.mdcore2,704 bytesSKILL.mdcore2,704 bytesSKILL.mdcore2,704 bytesSKILL.mdcore2,704 bytes
Read SKILL.md
# Excel_Conditional_Filtering_Optimization
> **Note**: This sub-skill covers one step of the Excel analysis workflow. For the full pipeline (file reading, row counting, large-file optimization, export), see the parent workflow SKILL.md.
Step1 读取 Excel 文件中所有工作表的数据,统计各表行数并汇总,用于评估数据规模。
```python
import pandas as pd
file_path = "input_data.xlsx"
# 读取所有 sheet,统计行数
xls = pd.ExcelFile(file_path)
print("Sheet names:", xls.sheet_names)View the complete source on GitHubexcel-threshold-analysis-and-styling
When your agent uses it
根据 Excel 数据量级自动判断处理策略,执行数值列清洗、条件过滤,并使用 openpyxl 对符合条件的单元格进行样式标记与导出。
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
511 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore1,941 bytesSKILL.mdcore1,941 bytesSKILL.mdcore1,941 bytesSKILL.mdcore1,941 bytes
Read SKILL.md
# Excel Threshold Analysis and Styling
> **Note**: This sub-skill covers one step of the Excel analysis workflow. For the full pipeline (file reading, row counting, large-file optimization, export), see the parent workflow SKILL.md.
Step1 读取 Excel 文件中所有工作表的行数并汇总,用于评估数据规模。
```python
import pandas as pd
file_path = 'input_file.xlsx'
# 读取所有 sheet 名称并统计总行数
xls = pd.ExcelFile(file_path)
sheet_names = xls.sheet_namesView the complete source on GitHubexcel-basic-statistics-and-routing
When your agent uses it
对多Sheet Excel文件进行基础统计与,支持按条件筛选计算均值,以及从指定行区间提取数据去重求和,并生成结果文件与下载链接。
What it loads into context
Frontmatter
51 tokensAlways available to the agent
SKILL.md
955 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore3,884 bytesSKILL.mdcore3,884 bytesSKILL.mdcore3,884 bytesSKILL.mdcore3,884 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 筛选指定分组数据,将目标列转换为数值类型并计算平均值。
```python
group_col = '班级' # 占位示例
target_group_value = '358' # 占位示例
target_cols = ['总分', '理数'] # 占位示例
if group_col not in df_analysis.columns:
raise ValueError(f"数据中缺少'{group_col}'列。")
df_analysis[group_col] = df_analysis[group_col].astype(str)
filtered_df = df_analysis[df_analysis[group_col] == target_group_value]View the complete source on GitHubcategory-statistics
When your agent uses it
提取指定类别列并统计各类别数量与占比,生成高分辨率的柱状图、饼图等组合可视化报告,适用于分类数据的分布情况分析。
What it loads into context
Frontmatter
53 tokensAlways available to the agent
SKILL.md
1,585 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore5,610 bytesSKILL.mdcore5,610 bytesSKILL.mdcore5,610 bytesSKILL.mdcore5,610 bytes
Read SKILL.md
## Skill Steps
Step1 提取目标类别数据,清洗无效标签,并统计各类别数量与占比。
```python
import pandas as pd
def calculate_distribution(data, target_col='类别'):
# 检查目标列是否存在
if target_col not in data.columns:
raise ValueError(f'未找到指定的类别字段: {target_col}')
# 提取数据,清洗无效标签(如'--'、'代码'等占位符)
category_data = data[target_col].dropna().replace(['--', '代码'], pd.NA).dropna()
View the complete source on GitHubgrouped-statistics
When your agent uses it
对多 Sheet 的 Excel 文件进行行数统计、数据合并与前向填充。
What it loads into context
Frontmatter
29 tokensAlways available to the agent
SKILL.md
1,102 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore3,803 bytesSKILL.mdcore3,803 bytesSKILL.mdcore3,803 bytesSKILL.mdcore3,803 bytes
Read SKILL.md
## Skill Steps
> **Note**: This sub-skill covers one step of the Excel analysis workflow. For the full pipeline (file reading, row counting, large-file optimization, export), see the parent workflow SKILL.md.
Step1 提取关键维度与指标信息,处理合并单元格缺失值,并进行多表交叉分析与排序。
```python
import pandas as pd
# 设定目标列名
group_col = '行业名称'
target_val_1 = '企业单位数'
target_val_2 = '工业总产值'
# 读取第一个 Sheet 并清洗View the complete source on GitHubdynamic-percentage-and-large-file-analysis
When your agent uses it
根据文件行数动态切换大文件处理策略(Parquet转换),通过逐行扫描或列匹配提取关键指标并计算占比、均值等统计量,最终输出结构化Excel报告及可视化图表。
What it loads into context
Frontmatter
65 tokensAlways available to the agent
SKILL.md
981 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore3,684 bytesSKILL.mdcore3,684 bytesSKILL.mdcore3,684 bytesSKILL.mdcore3,684 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 在数据中动态定位关键字段,通过逐行扫描匹配关键词提取数值,并进行条件筛选与占比计算。
```python
key_values = {}
target_col = None
value_col = 'target_value_col'
# 动态查找目标分类列
for col in df_analysis.columns:
if 'keyword1' in col.lower() or 'keyword2' in col.lower():
target_col = colView the complete source on GitHubexcel-bar-chart-visualization
When your agent uses it
读取多工作表Excel文件,自动处理合并单元格与数据清洗,进行交叉分组统计并生成带总计行的结果表,最后绘制支持中英文字体的美化柱状图,适用于多维度数据汇总与可视化分析。
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
1,182 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore4,668 bytesSKILL.mdcore4,668 bytesSKILL.mdcore4,668 bytesSKILL.mdcore4,668 bytesSKILL.mdcore4,668 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
### Step1: 数据合并与清洗
```python
combined_df = pd.concat(data_frames, ignore_index=True)
# 数据清洗:使用正则表达式统一命名
if '题型' in combined_df.columns:
combined_df['题型'] = combined_df['题型'].astype(str).str.replace('判', '判断题', regex=False)
# 处理合并单元格技巧1:前向填充
if '流程描述' in combined_df.columns:View the complete source on GitHubstatistical-distribution-and-outlier-analysis
When your agent uses it
执行数值型数据的分布分析与异常值检测,支持通过正则表达式从文本中提取误差项并生成高分辨率的箱线图与直方图报告。
What it loads into context
Frontmatter
57 tokensAlways available to the agent
SKILL.md
1,457 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore5,164 bytesSKILL.mdcore5,164 bytesSKILL.mdcore5,164 bytesSKILL.mdcore5,164 bytesSKILL.mdcore5,164 bytesSKILL.mdcore5,164 bytesSKILL.mdcore5,164 bytes
Read SKILL.md
Step 1 加载数据并进行预处理,配置中文字体与环境参数
```python
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import re
# 设置中文字体,兼容不同环境
plt.rcParams['font.sans-serif'] = ['SimHei', 'WenQuanYi Zen Hei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
# 加载数据并处理合并单元格
file_path = 'input_data.xlsx'View the complete source on GitHubline-chart-visualization
When your agent uses it
提取结构化数据并进行特征清洗与聚类分析,生成包含趋势对比、分布特征与参数敏感性的多维度综合可视化图表,适用于各类趋势预测与多维对比场景。
What it loads into context
Frontmatter
66 tokensAlways available to the agent
SKILL.md
2,039 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore6,944 bytesSKILL.mdcore6,944 bytesSKILL.mdcore6,944 bytesSKILL.mdcore6,944 bytesSKILL.mdcore6,944 bytes
Read SKILL.md
Step1 数据加载与预处理(支持大文件Parquet转换与动态表头识别)。
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler
import os
import re
# 设置中英文字体与图表美化
plt.rcParams['font.sans-serif'] = ['SimHei', 'WenQuanYi Zen Hei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = FalseView the complete source on GitHubpie-chart-data-analysis
When your agent uses it
对多Sheet Excel或CSV数据进行分类汇总统计,自动识别关键字段并生成包含占比、数值及美化饼图的可下载分析报告。
What it loads into context
Frontmatter
48 tokensAlways available to the agent
SKILL.md
1,290 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore4,621 bytesSKILL.mdcore4,621 bytesSKILL.mdcore4,621 bytesSKILL.mdcore4,621 bytesSKILL.mdcore4,621 bytes
Read SKILL.md
Step1 读取文件并统计所有 Sheet 的行数,确认数据规模以决定处理策略。
```python
import pandas as pd
file_path = input_file
total_rows = 0
sheet_names = []
try:
if file_path.endswith('.xlsx'):
excel_file = pd.ExcelFile(file_path)
sheet_names = excel_file.sheet_names
# 统计所有工作表总行数
for sheet in sheet_names:View the complete source on GitHubexcel-statistical-viz-large-file
When your agent uses it
对 Excel 数据进行多维度统计分析与可视化。
What it loads into context
Frontmatter
27 tokensAlways available to the agent
SKILL.md
1,131 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,865 bytesSKILL.mdcore3,865 bytesSKILL.mdcore3,865 bytesSKILL.mdcore3,865 bytesSKILL.mdcore3,865 bytes
Read SKILL.md
# excel_statistical_visualization
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 数据清洗与标准化。提取目标分析列,处理合并单元格(ffill),并利用正则表达式或类型转换清理数值字段,确保分析数据集的准确性。
```python
import re
# 假设 target_col_x 和 target_col_y 是分析目标
# 处理合并单元格导致的缺失值
df['group_col'] = df['group_col'].fillna(method='ffill')
def clean_numeric_string(value):
if pd.isna(value): return NoneView the complete source on GitHubstacked-chart-visualization
When your agent uses it
处理包含百分比字符串的分类占比数据,通过补全缺失维度并生成堆叠柱状图,直观展示多维度构成随时间或分类的变化趋势。
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
1,104 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,591 bytesSKILL.mdcore3,591 bytesSKILL.mdcore3,591 bytesSKILL.mdcore3,591 bytesSKILL.mdcore3,591 bytesSKILL.mdcore3,591 bytes
Read SKILL.md
# Stacked_Chart_Visualization
Step1 定义百分比转换函数并提取原始数据。通过正则表达式或字符串处理将百分比格式转换为可计算的浮点数。
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 配置中文字体,确保图表标签正常显示
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
def convert_percentage(val):
"""View the complete source on GitHublarge-excel-analysis-and-formatting
When your agent uses it
用于处理多Sheet大型Excel文件,支持大文件Parquet格式转换提速,并使用openpyxl生成带条件高亮和自定义样式的格式化Excel报告及下载链接。
What it loads into context
Frontmatter
54 tokensAlways available to the agent
SKILL.md
1,052 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore3,990 bytesSKILL.mdcore3,990 bytesSKILL.mdcore3,990 bytesSKILL.mdcore3,990 bytes
Read SKILL.md
## Skill Steps
Step1 读取Excel文件,统计所有Sheet的总行数。若数据量过大(如≥1万行),则转换为Parquet格式以显著提升后续读取和分析效率。
```python
import pandas as pd
file_path = "input.xlsx"
xls = pd.ExcelFile(file_path)
total_rows = 0
# 统计所有 sheet 的总行数
for name in xls.sheet_names:
df_temp = pd.read_excel(file_path, sheet_name=name, header=None)
total_rows += len(df_temp)View the complete source on GitHubmulti-file-excel-parquet-analysis
When your agent uses it
读取多 Sheet Excel 文件并统计规模,支持大文件向 Parquet 格式转换、分类数据统计及可视化报告生成。
What it loads into context
Frontmatter
42 tokensAlways available to the agent
SKILL.md
851 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore3,249 bytesSKILL.mdcore3,249 bytesSKILL.mdcore3,249 bytesSKILL.mdcore3,249 bytes
Read SKILL.md
> **Note**: This sub-skill covers one step of the Excel analysis workflow. For the full pipeline (file reading, row counting, large-file optimization, export), see the parent workflow SKILL.md.
Step1 读取 Excel 文件,遍历所有 Sheet 统计行数,评估数据规模。
```python
import pandas as pd
import os
file_path = "input_data.xlsx" # 替换为实际文件路径
if not os.path.exists(file_path):
print(f"Error: 文件 {file_path} 不存在")
else:View the complete source on GitHubmulti-sheet-reading-and-analysis
When your agent uses it
用于读取多工作表Excel文件,动态评估数据量以启用Parquet大文件优化,并执行正则清洗、分类汇总、线性拟合及生成带格式的图表与结果文件。
What it loads into context
Frontmatter
58 tokensAlways available to the agent
SKILL.md
1,434 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore5,160 bytesSKILL.mdcore5,160 bytesSKILL.mdcore5,160 bytesSKILL.mdcore5,160 bytesSKILL.mdcore5,160 bytes
Read SKILL.md
Step1 统计多工作表总行数,并根据数据量级(如≥1万行)动态启用Parquet格式转换以优化大文件读取性能。
```python
import pandas as pd
import os
from openpyxl import load_workbook
file_path = "your_excel_file.xlsx"
xls = pd.ExcelFile(file_path)
sheet_names = xls.sheet_names
# 统计所有sheet的数据行数
total_rows = 0
for sheet in sheet_names:
wb = load_workbook(file_path, read_only=True, data_only=True)View the complete source on GitHubrange-reading-and-large-file-analysis
When your agent uses it
读取多 Sheet Excel 文件,根据数据量动态选择处理策略,支持特定区域数据提取、大文件 Parquet 转换、统计分析及可视化图表生成。
What it loads into context
Frontmatter
49 tokensAlways available to the agent
SKILL.md
1,170 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore4,169 bytesSKILL.mdcore4,169 bytesSKILL.mdcore4,169 bytesSKILL.mdcore4,169 bytes
Read SKILL.md
> **Note**: This sub-skill covers one step of the Excel analysis workflow. For the full pipeline (file reading, row counting, large-file optimization, export), see the parent workflow SKILL.md.
Step1 针对特定 Sheet 进行数据清洗与空值统计。支持处理带空格的列名,并计算关键指标的缺失率。
```python
target_sheet = "Sheet2"
target_col = "是否通过" # 示例列名,实际根据需求替换
# 读取指定 Sheet
df_target = pd.read_excel(file_path, sheet_name=target_sheet)
# 清洗列名:去除首尾空格
df_target.columns = [str(col).strip() for col in df_target.columns]
if target_col in df_target.columns:View the complete source on GitHubsingle-sheet-reading-and-analysis
When your agent uses it
读取并解析单个Excel工作表数据,支持合并单元格处理、数据清洗、交叉分析及多维度可视化,适用于需要从单表中提取关键指标并进行趋势模拟与图表生成的场景。
What it loads into context
Frontmatter
67 tokensAlways available to the agent
SKILL.md
1,272 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore4,518 bytesSKILL.mdcore4,518 bytesSKILL.mdcore4,518 bytesSKILL.mdcore4,518 bytesSKILL.mdcore4,518 bytesSKILL.mdcore4,518 bytesSKILL.mdcore4,518 bytes
Read SKILL.md
## Skill Steps
Step1 导入依赖并配置中英文字体,防止图表乱码
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import re
import base64
from IPython.display import HTML
# 设置中英文字体
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans', 'WenQuanYi Zen Hei']View the complete source on GitHubexcel-multi-sheet-dynamic-analysis
When your agent uses it
用于分析包含多个Sheet的Excel文件,动态判断数据量级以决定是否转换为Parquet进行大文件处理,并支持跨Sheet的特定字段统计、数据清洗、交叉分析与可视化,最终生成带下载链接的汇总报告。
What it loads into context
Frontmatter
70 tokensAlways available to the agent
SKILL.md
1,584 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore6,140 bytesSKILL.mdcore6,140 bytesSKILL.mdcore6,140 bytesSKILL.mdcore6,140 bytesSKILL.mdcore6,140 bytes
Read SKILL.md
Step1 遍历所有sheet,灵活定位目标列并统计特定类型字段的数量。
```python
target_col_keyword = 'type' # 占位示例
target_val_keyword = 'varchar' # 占位示例
total_target_count = 0
target_details = []
for sheet_name in wb.sheetnames:
ws = wb[sheet_name]
raw_data = list(ws.iter_rows(values_only=True))
# 实用技巧:灵活策略定位目标列,通过扫描前几行数据内容定位表头行
header_row_idx = NoneView the complete source on GitHubexcel-large-file-processing-and-cleaning
When your agent uses it
读取多 sheet Excel 文件,动态识别目标列进行统计,并使用正则清洗文本字段提取中文字符,最终输出标准化 Excel 文件。
What it loads into context
Frontmatter
46 tokensAlways available to the agent
SKILL.md
578 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore2,250 bytesSKILL.mdcore2,250 bytesSKILL.mdcore2,250 bytesSKILL.mdcore2,250 bytes
Read SKILL.md
# Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 文本字段清洗,使用正则表达式提取纯中文字符(过滤数字、特殊符号等)。
```python
import re
def extract_chinese(text):
if pd.isna(text):
return text
# 仅保留 Unicode 中文字符范围
chinese_chars = re.findall(r'[一-龥]', str(text))
cleaned = ''.join(chinese_chars)View the complete source on GitHubchart-embedded-export
When your agent uses it
从结构化数据中提取分类分布执行清洗与统计,生成多维度交叉分析、高分辨率对比图表及包含下载链接的完整分析报告,适用于大文件处理与嵌入式可视化场景。
What it loads into context
Frontmatter
67 tokensAlways available to the agent
SKILL.md
1,391 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore4,725 bytesSKILL.mdcore4,725 bytesSKILL.mdcore4,725 bytesSKILL.mdcore4,725 bytesSKILL.mdcore4,725 bytesSKILL.mdcore4,725 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 执行数据清洗,处理合并单元格,使用正则表达式清理文本,并建立分类映射函数骨架。
```python
target_col = '分类字段'
value_col = '数值字段'
# 合并单元格处理 (向下填充还原)
df[target_col] = df[target_col].ffill()
# 数据清洗:正则去除特殊字符、去空、类型转换
df[target_col] = df[target_col].astype(str).str.replace(r'[^\w\s]', '', regex=True).str.strip()View the complete source on GitHubformatted-export-with-parquet
When your agent uses it
从多Sheet Excel文件中识别指定条件的记录,并将筛选结果以整行标红格式导出为Excel文件,适用于数据清洗、条件筛选与可视化标记场景。
What it loads into context
Frontmatter
90 tokensAlways available to the agent
SKILL.md
726 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore2,810 bytesSKILL.mdcore2,810 bytesSKILL.mdcore2,810 bytes
Read SKILL.md
# Formatted_Export
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
## Skill Steps
Step1 对所有 sheet 进行扫描,通过模糊匹配定位目标列,筛选出符合条件(如空值或无效字符)的记录。
```python
empty_target_rows = []
for sheet_name, sheet_df in all_sheets.items():
target_col = None
# 优先匹配目标列名(示例:包含特定关键字的列)
for col in sheet_df.columns:View the complete source on GitHubexcel-data-analysis-and-report-generation
When your agent uses it
从Excel提取多类型数据,并生成包含可视化图表与下载链接的综合分析报告。
What it loads into context
Frontmatter
35 tokensAlways available to the agent
SKILL.md
1,276 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore5,009 bytesSKILL.mdcore5,009 bytesSKILL.mdcore5,009 bytesSKILL.mdcore5,009 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 基于指定列提取有效代码或进行分类映射,生成包含占比与总计行的统计表,并支持交叉分析。
```python
# 分类映射函数骨架
def categorize_item(item_name):
category_a_keywords = ['keyword1', 'keyword2'] # 占位示例
if pd.isna(item_name):
return '未知'
if any(kw in str(item_name) for kw in category_a_keywords):
return '类别A'
return '其他'View the complete source on GitHubexcel-sheet-filter-export
When your agent uses it
动态统计多Sheet Excel文件行数以判断大文件处理逻辑,并根据特定条件筛选数据、重命名字段后导出为包含下载链接的新Excel文件,适用于多Sheet数据探查与条件过滤导出场景。
What it loads into context
Frontmatter
64 tokensAlways available to the agent
SKILL.md
689 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Skill Steps
Files
SKILL.mdcore2,680 bytesSKILL.mdcore2,680 bytesSKILL.mdcore2,680 bytes
Read SKILL.md
## Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 读取目标Sheet,清理字段格式并根据特定条件筛选记录,统计关键指标。
```python
target_sheet = 'Sheet1' # 替换为实际sheet名
df_target = pd.read_excel(file_path, sheet_name=target_sheet)
# 清理目标列的字符串格式(去除首尾空格)
filter_col = 'group_col'
if filter_col in df_target.columns:
df_target[filter_col] = df_target[filter_col].astype(str).str.strip()
View the complete source on GitHubdynamic-large-file-parquet-analysis
When your agent uses it
动态统计Excel总行数,当数据量过大(≥10000行)时自动转换为Parquet格式加速读取,并对指定目标列进行条件筛选、分类汇总与结果导出,适用于超大体积Excel文件的快速读取与统计分析。
What it loads into context
Frontmatter
72 tokensAlways available to the agent
SKILL.md
592 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore2,298 bytesSKILL.mdcore2,298 bytesSKILL.mdcore2,298 bytesSKILL.mdcore2,298 bytes
Read SKILL.md
# Skill Steps
> This sub-skill covers one capability of the Excel workflow. For reading/counting/Parquet optimization, see the parent workflow SKILL.md.
Step1 动态读取数据(Parquet加速或常规读取)。
```python
# 若已加载 sn-da-large-file-analysis 技能,将 Excel 文件转换为 Parquet 格式加速读取
if 'da_large_file_analysis' in globals():
# 假设 sn-da-large-file-analysis 转换后生成了 parquet 文件
parquet_path = 'auto_converted_data.parquet'
df = pd.read_parquet(parquet_path)
print("已使用 Parquet 格式加速读取大文件。")
else:
df = pd.read_excel(file_path, sheet_name='Sheet1', header=0)View the complete source on GitHubsn-da-image-caption
When your agent uses it
图片理解与数据提取 skill。当图片文件(.png/.jpg/.jpeg/.gif/.webp/.bmp)是主要输入且用户需要理解、提取数据或分析图片内容时使用。提供预配置的 caption 脚本(scripts/caption.py),通过 vision 模型将图片转为文本描述,无需额外配置 API Key。覆盖:(1) 通过 scripts/caption.py 对图表/表格/截图/流程图进行 caption,(2) 将 caption 文本解析为结构化 DataFrame,(3) 基于提取数据重新生成可视化图表,(4) 导出为 Excel/CSV。**遇到以下任一情况就主动使用本 skill,不要自行猜测图片内容**:①用户出现触发词:图片分析 / 图表提取 / 表格识别 / OCR / 图片描述 / 截图分析 / 图表数据 / 提取图片中的数据 / 图片转表格 / 识别图片 / image caption / extract data from image / chart analysis / table OCR;②用户上传或指定了图片文件(.png / .jpg / .jpeg / .gif / .webp / .bmp)并要求理解、提取数据或分析内容;③任务需要从图表截图、表格截图、UI 截图、流程图中提取结构化信息;④用户要求将图片中的数据转为 Excel/CSV 或重新生成可视化图表。仅不用于:图片编辑(裁剪、滤镜、缩放)、图片生成、不含数据的风景/人物照片描述。
What it loads into context
Frontmatter
350 tokensAlways available to the agent
SKILL.md
2,297 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- scripts/caption.py — Image Caption
- Calling from Python
- Prompt Strategy
- Parsing Caption Results
- Visualization
- Export to Excel
- Multi-Image Processing
- Common Pitfalls
Scripts executed separately
scripts/caption.py
Files
SKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesSKILL.mdcore8,934 bytesscripts/caption.pyruns16,093 bytes
Read SKILL.md
# Image Caption Analysis — 图片描述与数据提取
## Overview
Analyze, extract data from, or understand image files (.png, .jpg, .jpeg, .gif, .webp, .bmp). The core workflow:
1. Run `scripts/caption.py` to get a text description of the image
2. Parse the description into structured data (DataFrame, etc.)
3. Analyze, visualize, or export
## scripts/caption.py — Image Caption
The script converts images to text descriptions via a vision model. Configure via `SN_API_KEY` (minimum required), or use `SN_VISION_API_KEY` / `SN_VISION_BASE_URL` / `SN_VISION_MODEL` for fine-grained control. See the project environment variable spec for the full fallback chain.
View the complete source on GitHubsn-da-large-file-analysis
When your agent uses it
万行以上 Excel 数据集的高性能分析引擎。提供 openpyxl read_only 流式读取(iter_rows 支持 10 万行以上)、Parquet 转换加速、内存优化、分块处理和大文件写入模式。**遇到以下任一情况就主动使用本 skill**:①数据行数 ≥ 10k(由 sn-da-excel-workflow 的行数评估步骤触发);②用户出现触发词:大文件 / 大数据量 / 性能优化 / 内存不足 / OOM / 百万行 / 十万行 / 流式读取 / Parquet / 分块处理 / large file / big data / streaming read / chunked processing;③直接使用 pd.read_excel() 导致超时或内存溢出;④用户明确要求对大规模数据集进行高性能处理。仅不用于:小于 10k 行的常规 Excel 分析(使用 sn-da-excel-workflow 即可)。
What it loads into context
Frontmatter
224 tokensAlways available to the agent
SKILL.md
3,507 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Mandatory Rules
- Environment Setup
- Core Method 1: Inspect File Structure (Without Loading Data)
- Core Method 2: Streaming Read → Parquet (100k+ Rows)
- Core Method 3: Medium File Parquet Conversion (10k–100k Rows)
- Core Method 4: Memory Optimization (Type Downcasting)
- Core Method 5: Large File Writing
- Example 1: 100k-Row Table — Column Distribution + Chart
- Example 2: 1M-Row Table — Streaming Read + Filter + Export
- Vectorized Operations Cheat Sheet
- Memory Estimation
- Best Practices
Files
SKILL.mdcore13,007 bytesSKILL.mdcore13,007 bytesSKILL.mdcore13,007 bytesSKILL.mdcore13,007 bytesSKILL.mdcore13,007 bytesSKILL.mdcore13,007 bytesSKILL.mdcore13,007 bytesSKILL.mdcore13,007 bytesSKILL.mdcore13,007 bytes
Read SKILL.md
# Large Scale Excel Analysis Skill
## Mandatory Rules
> **When total rows >= 10,000, you MUST use the methods in this skill.**
| Data Scale | Read Strategy | Reason |
|-----------|---------------|--------|
| < 10k rows | `pd.read_excel()` directly | No memory pressure |
| 10k–100k rows | `pd.read_excel()` → convert to Parquet → `pd.read_parquet()` for analysis | Avoid repeated slow reads |
| 100k–1M rows | **openpyxl `read_only` + `iter_rows` streaming** → Parquet | `pd.read_excel()` will OOM or timeout |
| > 1M rows | Streaming read + **multi-sheet split** (Excel max 1,048,576 rows per sheet) | Must chunk |
**Prohibited:**View the complete source on GitHubsn-da-non-spreadsheet-analysis
When your agent uses it
Word / PDF / PPT 文档解析与数据分析引擎。覆盖三类文件格式的全量提取、表格数值化、图表理解与跨文档汇总分析。**遇到以下任一情况就主动使用本 skill**:①用户上传或指定了 .docx / .doc / .pdf / .pptx / .ppt 文件并要求分析、提取或统计其中内容;②用户出现触发词:Word分析 / PDF解析 / PPT提取 / 文档分析 / 报告解析 / 幻灯片分析 / 发票提取 / 合同分析 / 文档统计 / 错别字 / 语病 / 字号检查 / 简历分析 / 多文档对比;③任务涉及从文档中提取表格、数值、图表、格式(颜色/高亮/字号)、组织架构、时间线等结构化信息。仅不用于:Excel/CSV 数据分析(使用 sn-da-excel-workflow)、纯图片分析(使用 sn-da-image-caption)。
What it loads into context
Frontmatter
240 tokensAlways available to the agent
SKILL.md
1,416 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Universal Rules
- Caption Script (for image/chart content in any document)
- Available sub-skills
Files
SKILL.mdcore5,453 bytesSKILL.mdcore5,453 bytesSKILL.mdcore5,453 bytesSKILL.mdcore5,453 bytes
Read SKILL.md
# Document Analysis Skill — Word / PDF / PPT
End-to-end workflow for Word, PDF, and PPT document parsing. Each format has
specific parsing pitfalls — follow the format-specific sub-skill exactly.
---
## Workflow
### Step 0 — Identify file type and input scope
```python
import os
View the complete source on GitHubpdf-analysis
When your agent uses it
PDF 文档解析。自动区分文字型 PDF 与扫描型 PDF,覆盖:文本/表格提取、多页全量扫描、嵌入图表 caption、单位感知数值计算。
What it loads into context
Frontmatter
53 tokensAlways available to the agent
SKILL.md
2,575 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 0 — Detect PDF type (text vs scanned)
- Core Method 1: Text PDF — Full Text Extraction (ALL pages)
- Core Method 2: Text PDF — Table Extraction
- Core Method 3: Scanned PDF — OCR via Caption
- Core Method 4: Hybrid PDF (mixed text + image pages)
- Core Method 5: Extract Embedded Images / Charts from PDF
- Common Patterns
- Pitfalls
Files
SKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytesSKILL.mdcore10,165 bytes
Read SKILL.md
# PDF Analysis
## Step 0 — Detect PDF type (text vs scanned)
**Critical first step**: determine whether the PDF has extractable text or is a scanned image.
Never skip this — using the wrong parser wastes time and produces empty results.
```python
import fitz # PyMuPDF
def detect_pdf_type(pdf_path, sample_pages=3):
"""
Returns 'text' if PDF has extractable text, 'scanned' if image-based.
Checks first N pages (or all if fewer).View the complete source on GitHubppt-analysis
When your agent uses it
PPT (.pptx/.ppt) 全量解析。覆盖:所有 slide 文本/表格/图表提取、嵌入图片 caption、纯图片 slide 渲染识别、数据标签提取。
What it loads into context
Frontmatter
56 tokensAlways available to the agent
SKILL.md
2,691 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Environment
- Core Method 1: Full Text Extraction (ALL slides)
- Core Method 2: Table Extraction (Structured)
- Core Method 3: Chart Data Extraction
- Core Method 4: Render Image-Only Slides → Caption
- Common Patterns
- Full Workflow Example
- Pitfalls
Files
SKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytesSKILL.mdcore11,223 bytes
Read SKILL.md
# PPT Analysis — .pptx / .ppt
## Environment
```python
from pptx import Presentation
from pptx.util import Inches
import os, subprocess, json
# python-pptx is available
# For .ppt (old binary format): convert via libreoffice
def load_pptx(path):
if path.lower().endswith('.ppt'):
import subprocessView the complete source on GitHubword-analysis
When your agent uses it
Word (.docx/.doc) 文档全量解析。覆盖:正文/段落文本提取、表格数据提取、高亮/颜色格式读取、多文件汇总对比、嵌入图片转 caption。
What it loads into context
Frontmatter
57 tokensAlways available to the agent
SKILL.md
2,165 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Environment
- Core Method 1: Full Text Extraction
- Core Method 2: Table Extraction (Structured)
- Core Method 3: Format-Aware Extraction (Color / Highlight)
- Core Method 4: Multi-File Aggregation
- Core Method 5: Embedded Images → Caption
- Common Patterns
- Pitfalls
Files
SKILL.mdcore8,834 bytesSKILL.mdcore8,834 bytesSKILL.mdcore8,834 bytesSKILL.mdcore8,834 bytesSKILL.mdcore8,834 bytesSKILL.mdcore8,834 bytesSKILL.mdcore8,834 bytesSKILL.mdcore8,834 bytesSKILL.mdcore8,834 bytes
Read SKILL.md
# Word Analysis — .docx / .doc
## Environment
```python
from docx import Document
import os
# python-docx is available; for .doc (old format) convert via libreoffice first
def load_doc(path):
"""Load .docx directly; convert .doc to .docx first if needed."""
if path.lower().endswith('.doc'):
import subprocess
out_dir = os.path.dirname(path)View the complete source on GitHubsn-deep-research
When your agent uses it
用于用户请求深度研究、系统性研究、竞品分析、方案对比、趋势分析或事实核查时。**遇到以下任一情况就主动使用本 skill,不要自行搜几条就回答**:①用户出现触发词:深度研究 / 深度调研 / 深入研究 / 全面研究 / 系统研究 / 调研 / 调查 / 尽调 / 行业研究 / 市场研究 / 竞品分析 / 政策研究 / 技术研究 / 趋势研究 / 事实核查 / 写一份研究报告 / 调研报告 / 深度报告 / research / deep research;②请求需要跨多来源取证、多维度对比、交叉验证才能给出可靠结论;③用户要求产出报告、白皮书、行业分析或尽调文档;④话题涉及最新政策/市场/产品/价格/法规,需要系统核查。无核验要求的简单常识问答不使用。模糊或宽泛的"研究/了解一下 X"也优先触发。仅不用于:一句话摘要、已给定单一来源的整理、纯文字润色改写。
What it loads into context
Frontmatter
268 tokensAlways available to the agent
SKILL.md
8,508 tokensWhen the skill is activated
Reference documents
44,269 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. 总则
- 2. 子 agent 派发机制
- 3. 报告目录
- 4. 启动确认与档位选择
- 5. 阶段库
- 6. 附录:上下文边界
Scripts executed separately
scripts/validate_briefing.pyscripts/validate_evidence.pyscripts/validate_outline.pyscripts/validate_plan.pyscripts/validate_supplement_plan.pyworkbench-runtime/bin/sensenova-ppt-workbench.mjsworkbench-runtime/bin/sensenova-research-workbench.mjsworkbench-runtime/dist-server/index.mjsworkbench-runtime/dist/assets/MarkdownArtifactViewer-C7xIspsK.jsworkbench-runtime/dist/assets/index-BrQYg30H.jsworkbench-runtime/package.json
Files
SKILL.mdcore31,623 bytesSKILL.mdcore31,623 bytesSKILL.mdcore31,623 bytesSKILL.mdcore31,623 bytesSKILL.mdcore31,623 bytesSKILL.mdcore31,623 bytesagents/perspective.mddoc6,402 bytesagents/plan.mddoc21,757 bytesagents/report-planner.mddoc10,073 bytesagents/report-stitcher.mddoc7,160 bytesagents/report-writer.mddoc11,311 bytesagents/research.mddoc25,113 bytesagents/review.mddoc15,883 bytesagents/scout.mddoc11,916 bytesagents/supplement-planner.mddoc11,320 bytesschemas/briefing.schema.mddoc8,473 bytesschemas/evidence.schema.mddoc8,958 bytesschemas/outline.schema.mddoc12,282 bytesschemas/perspective_feedback.schema.mddoc2,722 bytesschemas/plan.schema.mddoc6,955 bytesschemas/supplement_plan.schema.mddoc3,353 bytesscripts/validate_briefing.pyruns42,494 bytesscripts/validate_evidence.pyruns19,057 bytesscripts/validate_outline.pyruns44,074 bytesscripts/validate_plan.pyruns13,181 bytesscripts/validate_supplement_plan.pyruns15,562 bytesworkbench-runtime/bin/sensenova-ppt-workbench.mjsruns21,196 bytesworkbench-runtime/bin/sensenova-research-workbench.mjsruns142 bytesworkbench-runtime/dist-server/index.mjsruns1,890,132 bytesworkbench-runtime/dist/assets/MarkdownArtifactViewer-C7xIspsK.jsruns110,452 bytesworkbench-runtime/dist/assets/index-BrQYg30H.jsruns559,490 bytesworkbench-runtime/dist/assets/index-Bv_HE0iq.cssasset151,096 bytesworkbench-runtime/dist/favicon.svgasset9,522 bytesworkbench-runtime/dist/index.htmlasset531 bytesworkbench-runtime/dist/sensetime-mark.pngasset25,072 bytesworkbench-runtime/package.jsonruns418 bytes
Read SKILL.md
# 深度研究(多 Agent 深度研究编排)
你是深度研究总控。职责是**调度**专家角色完成研究、写作与渲染。
阅读地图:§1 总则 → §2 派发机制 → §3 报告目录 → **§4 档位选择器(决定跑什么)** → **§5 阶段库(每个角色怎么派,仅一次)** → §6 附录。运行时先按 §4 选定本次档位的流水线,再按流水线逐步跳转 §5 的对应条目。
## 1. 总则
**控制器铁律**:
- **只调度,不读大文件**:evidence / 章节 / outline 等大文件通过绝对路径传给角色自读;你只读调度所需的小字段(见 §6)。
- **所有文件路径使用绝对路径**。
- **通过文件路径传递内容**,不在消息里粘贴大段正文。
- **子角色内部检查透明**:各子 agent 自行完成交付检查和必要修复。View the complete source on GitHubsn-deepresearch-cli
When your agent uses it
一键启用 SenseNova-Skills-DeepResearch,用于行业与市场研究、竞品分析、政策或技术调研、商业尽调、趋势分析、方案对比、事实核查,以及研究报告、白皮书等交付场景。用户提出深度研究、调研、调查、尽调、research/deepresearch,或任务需要跨来源取证、多维度比较和交叉验证时主动使用;Skill 会完成环境检查、SenseNova-Skills-DeepResearch 安装或升级、Harness 与 Search/Camofox 准备、参数确认、研究启动和 Web 进度提示。简单常识问答、单一来源整理和纯文字润色不使用。
What it loads into context
Frontmatter
164 tokensAlways available to the agent
SKILL.md
3,540 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 环境预检
- 安装或升级 SenseNova-Skills-DeepResearch
- 准备 Harness
- 模型调用超时与恢复
- 准备 Camofox
- 确认研究参数
- 启动研究
- 完成、失败与恢复
- SenseNova-Skills-DeepResearch 诊断
Files
SKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesSKILL.mdcore13,889 bytesagents/openai.yamlasset317 bytes
Read SKILL.md
# sn-deepresearch-cli
作为 SenseNova-Skills-DeepResearch 的用户入口,负责环境预检、安装引导、参数确认、任务启动、进度告知和结果交付。
默认 npm 包为 `sensenova-skills-deepresearch`,项目源码仓库为
`https://github.com/OpenSenseNova/SenseNova-Skills-DeepResearch`。用户侧直接安装已构建并发布到 npm 的包,
不需要 clone 仓库或本地构建。
## 环境预检
在安装或启动 SenseNova-Skills-DeepResearch 前,仅检查当前环境是否具备运行条件:
- Node.js >= 22、Python >= 3.10 和 npm 是否可用;
- 是否已安装 SenseNova-Skills-DeepResearch 提供的 `deepresearch` 命令;
- 用户选择的 Hermes、Codex、Claude Code 或 OpenClaw 是否存在。View the complete source on GitHubsn-image-base
When your agent uses it
Base-layer skill for the SenseNova-Skills project, providing low-level APIs for image generation, recognition (VLM), and text optimization (LLM). This skill does not preprocess inputs; it only calls backend services and returns results. This skill is not user-facing and is intended for upper-layer skills only.
What it loads into context
Frontmatter
159 tokensAlways available to the agent
SKILL.md
3,523 tokensWhen the skill is activated
Reference documents
9,337 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Dependency Installation
- Overview
- Tools List
- VLM vs LLM
- Usage
- Agent Configuration Integration
- Mapping Between base-url and Interface Type
- Output Format
- Input/Output Specification
Scripts executed separately
scripts/.python-versionscripts/extract_json.pyscripts/sn_agent_runner.pyscripts/sn_image_base/__init__.pyscripts/sn_image_base/configs.pyscripts/sn_image_base/exceptions.pyscripts/sn_image_base/generation/__init__.pyscripts/sn_image_base/generation/core/__init__.pyscripts/sn_image_base/generation/core/client_base.pyscripts/sn_image_base/generation/nano_banana.pyscripts/sn_image_base/generation/openai_image.pyscripts/sn_image_base/generation/sensenova.pyscripts/sn_image_base/llm/__init__.pyscripts/sn_image_base/llm/anthropic_adapter.pyscripts/sn_image_base/llm/chat_completions_adapter.pyscripts/sn_image_base/llm/llm_adapter.pyscripts/sn_image_base/utils/__init__.pyscripts/sn_image_base/utils/error_utils.pyscripts/sn_image_base/utils/httpx_client.pyscripts/sn_image_base/vlm/__init__.pyscripts/sn_image_base/vlm/utils.pyscripts/sn_image_base/vlm/vlm_adapter.py
Files
.gitattributesasset219 bytes.gitignoreasset4,437 bytesREADME.mddoc10,712 bytesREADME_CN.mddoc10,359 bytesSKILL.mdcore12,976 bytesSKILL.mdcore12,976 bytesSKILL.mdcore12,976 bytesSKILL.mdcore12,976 bytesreferences/api_spec.mddoc13,197 bytesrequirements.txtdoc50 bytesscripts/.python-versionruns4 bytesscripts/extract_json.pyruns3,718 bytesscripts/pyproject.tomlasset339 bytesscripts/ruff.tomlasset730 bytesscripts/sn_agent_runner.pyruns24,926 bytesscripts/sn_image_base/__init__.pyruns24 bytesscripts/sn_image_base/configs.pyruns12,523 bytesscripts/sn_image_base/exceptions.pyruns1,218 bytesscripts/sn_image_base/generation/__init__.pyruns272 bytesscripts/sn_image_base/generation/core/__init__.pyruns412 bytesscripts/sn_image_base/generation/core/client_base.pyruns2,535 bytesscripts/sn_image_base/generation/nano_banana.pyruns11,868 bytesscripts/sn_image_base/generation/openai_image.pyruns12,619 bytesscripts/sn_image_base/generation/sensenova.pyruns19,923 bytesscripts/sn_image_base/llm/__init__.pyruns215 bytesscripts/sn_image_base/llm/anthropic_adapter.pyruns5,078 bytesscripts/sn_image_base/llm/chat_completions_adapter.pyruns9,966 bytesscripts/sn_image_base/llm/llm_adapter.pyruns1,814 bytesscripts/sn_image_base/utils/__init__.pyruns0 bytesscripts/sn_image_base/utils/error_utils.pyruns7,504 bytesscripts/sn_image_base/utils/httpx_client.pyruns7,136 bytesscripts/sn_image_base/vlm/__init__.pyruns100 bytesscripts/sn_image_base/vlm/utils.pyruns3,038 bytesscripts/sn_image_base/vlm/vlm_adapter.pyruns2,106 bytes
Read SKILL.md
# sn-image-base
## Dependency Installation
```bash
pip install -r requirements.txt
```
## Overview
`sn-image-base` is the base-layer skill (tier 0) of the SenseNova-Skills project and provides four low-level tools:
- `sn-image-generate`: image generation (calls text-to-image-no-enhance API)
- `sn-image-edit`: image editing with SenseNova U1.5 Lite (calls `/images/edits`)View the complete source on GitHubsn-image-doctor
When your agent uses it
Environment diagnostic skill for SenseNova-Skills project. Checks that sn-image-base is properly installed and configured, validates dependencies and environment variables. Prompts user to configure missing required variables and saves them to .env file. After configuration, reloads environment and suggests agent restart if needed.
What it loads into context
Frontmatter
154 tokensAlways available to the agent
SKILL.md
1,316 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- Usage
- Output Format
- Troubleshooting
- Integration with Other Skills
- Command-Line Options
- Exit Codes
- See Also
Scripts executed separately
../sn-image-base/scripts/sn_agent_runner.pyscripts/check_environment.py
Files
../sn-image-base/scripts/sn_agent_runner.pyruns24,926 bytesSKILL.mdcore5,609 bytesSKILL.mdcore5,609 bytesSKILL.mdcore5,609 bytesSKILL.mdcore5,609 bytesSKILL.mdcore5,609 bytesSKILL.mdcore5,609 bytesSKILL.mdcore5,609 bytesSKILL.mdcore5,609 bytesSKILL.mdcore5,609 bytesscripts/check_environment.pyruns6,298 bytes
Read SKILL.md
# sn-image-doctor
## Overview
`sn-image-doctor` is an infrastructure skill (tier 0) that validates the SenseNova-Skills environment before running other skills. It ensures SenseNova-Skills project is properly installed and configured.
This skill performs comprehensive checks including:
- Installation verification of SenseNova-Skills project
- Python dependency validation
- Environment variable configuration checks, with interactive prompts to configure missing required variables and save them to `.env`
- Automatic environment reload after configuration changes, with agent restart suggestion if reload fails
## UsageView the complete source on GitHubsn-image-imitate
When your agent uses it
Generates a new image that imitates the style of a reference image while updating content based on user intent. Uses a three-stage pipeline: image annotation (long caption), caption rewriting, and image generation. Use when user asks to "imitate style", "保持这个风格重画", "按这张图风格生成", or "style transfer with new content".
What it loads into context
Frontmatter
202 tokensAlways available to the agent
SKILL.md
3,834 tokensWhen the skill is activated
Reference documents
13,788 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-goals
- Input Specification
- Environment Variable
- API Configuration
- Architecture: Main Agent + Worker Agent
- Workflow
- Return Contract
- Output Format
- Call Relationship
- References
Files
../../docs/sn-image-generate_en.mddoc13,507 bytes../sn-image-base/README.mddoc10,712 bytes../sn-image-base/SKILL.mddoc12,976 bytesREADME.mddoc5,864 bytesREADME_CN.mddoc5,333 bytesSKILL.mdcore15,463 bytesSKILL.mdcore15,463 bytesSKILL.mdcore15,463 bytesSKILL.mdcore15,463 bytesSKILL.mdcore15,463 bytesSKILL.mdcore15,463 bytesSKILL.mdcore15,463 bytesSKILL.mdcore15,463 bytesprompts/caption_rewrite.mddoc1,239 bytesprompts/image_annotate.mddoc3,374 bytesprompts/layout_review.mddoc1,196 bytes
Read SKILL.md
# sn-image-imitate
Image style imitation scene skill (tier 1), relying on the `sn-image-recognize`, `sn-text-optimize`, and `sn-image-generate` tools provided by `sn-image-base` (tier 0).
Features:
- Extracts high-fidelity long caption from a reference image
- Rewrites caption according to user requested content change while preserving style and layout
- Enforces layout-lock constraints during caption rewrite
- Performs post-generation layout consistency review and bounded retries
- Returns structured process artifacts for debugging and reproducibility
## Non-goals
View the complete source on GitHubsn-image-resume
When your agent uses it
Generates a designed portfolio-resume image from resume content provided in conversation text. Extracts optional style instructions, converts the resume into a fixed portfolio-resume layout prompt, and generates the final image through sn-image-base. Use when user asks to create "resume image", "portfolio resume", "简历图", "简历海报", or "个人简历视觉设计".
What it loads into context
Frontmatter
197 tokensAlways available to the agent
SKILL.md
2,467 tokensWhen the skill is activated
Reference documents
9,670 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-goals
- Input Specification
- API Configuration
- Architecture: Main Agent + Worker Agent
- Workflow
- Output Format
- Call Relationship
- References
Files
../sn-image-base/SKILL.mddoc12,976 bytes../sn-image-base/references/api_spec.mddoc13,197 bytesSKILL.mdcore9,968 bytesSKILL.mdcore9,968 bytesSKILL.mdcore9,968 bytesSKILL.mdcore9,968 bytesSKILL.mdcore9,968 bytesSKILL.mdcore9,968 bytesprompts/resume.mddoc12,750 bytes
Read SKILL.md
# sn-image-resume
Resume image generation scene skill (tier 1), relying on the `sn-text-optimize` and `sn-image-generate` tools provided by `sn-image-base` (tier 0).
Features:
- Accepts resume content directly from conversational text
- Supports optional user-provided style direction
- Applies the fixed portfolio-resume layout rules in `prompts/resume.md`
- Generates a tall designed resume image through `sn-image-generate`
## Non-goals
- Editing or polishing a plain text resume document without generating an imageView the complete source on GitHubsn-infographic
When your agent uses it
Generates professional infographics with various layout types and visual styles. Analyzes content, recommends layout and style, and generates publication-ready infographics. Use when user asks to create "infographic", "信息图", "visual summary", or "可视化".
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
8,644 tokensWhen the skill is activated
Reference documents
39,668 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Input Specification
- API Configuration
- Architecture: Main Agent + Worker Agent
- Workflow
- Output Format
- Call Relationship
- References
Files
SKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesSKILL.mdcore33,301 bytesreferences/analysis-framework.mddoc9,300 bytesreferences/base-prompt.mddoc1,775 bytesreferences/evaluation-standard.mddoc2,701 bytesreferences/layout-style-selection.mddoc7,873 bytesreferences/layouts/asymmetry.mddoc1,003 bytesreferences/layouts/axial-expansion.mddoc935 bytesreferences/layouts/bento-grid.mddoc850 bytesreferences/layouts/big-typography.mddoc967 bytesreferences/layouts/binary-comparison.mddoc1,281 bytesreferences/layouts/breaking-the-grid.mddoc963 bytesreferences/layouts/bridge.mddoc901 bytesreferences/layouts/center-focus.mddoc897 bytesreferences/layouts/chapter-layout.mddoc933 bytesreferences/layouts/character-guide.mddoc1,018 bytesreferences/layouts/circular-flow.mddoc758 bytesreferences/layouts/collage-glitch.mddoc1,008 bytesreferences/layouts/comic-strip.mddoc845 bytesreferences/layouts/comparison-matrix.mddoc903 bytesreferences/layouts/conflict-contrast.mddoc1,024 bytesreferences/layouts/containerization.mddoc1,011 bytesreferences/layouts/dashboard.mddoc775 bytesreferences/layouts/data-landscape.mddoc953 bytesreferences/layouts/deconstruction.mddoc992 bytesreferences/layouts/diagonal-composition.mddoc1,046 bytesreferences/layouts/disrupted-flow.mddoc1,009 bytesreferences/layouts/edge-tension.mddoc1,107 bytesreferences/layouts/editorial-vogue.mddoc999 bytesreferences/layouts/emotional-gradient.mddoc1,034 bytesreferences/layouts/f-pattern.mddoc934 bytesreferences/layouts/flashback.mddoc1,041 bytesreferences/layouts/four-quadrant-grid.mddoc1,125 bytesreferences/layouts/frame-composition.mddoc1,052 bytesreferences/layouts/full-bleed-image.mddoc957 bytesreferences/layouts/full-illustration.mddoc1,033 bytesreferences/layouts/funnel.mddoc815 bytesreferences/layouts/gallery-style.mddoc929 bytesreferences/layouts/generous-margins.mddoc1,030 bytesreferences/layouts/golden-ratio-split.mddoc1,055 bytesreferences/layouts/hard-alignment.mddoc961 bytesreferences/layouts/header-body.mddoc884 bytesreferences/layouts/heading-subheading.mddoc928 bytesreferences/layouts/hidden-details.mddoc958 bytesreferences/layouts/hierarchical-layers.mddoc1,179 bytesreferences/layouts/hub-spoke.mddoc864 bytesreferences/layouts/iceberg.mddoc882 bytesreferences/layouts/isometric-map.mddoc828 bytesreferences/layouts/isometric-tech-stack.mddoc1,147 bytesreferences/layouts/jigsaw.mddoc844 bytesreferences/layouts/left-image-right-text.mddoc833 bytesreferences/layouts/left-text-right-image.mddoc815 bytesreferences/layouts/linear-progression.mddoc1,237 bytesreferences/layouts/luxury-layout.mddoc898 bytesreferences/layouts/macro-closeup.mddoc939 bytesreferences/layouts/maximalism.mddoc954 bytesreferences/layouts/modular-repetition.mddoc965 bytesreferences/layouts/multi-directional.mddoc938 bytesreferences/layouts/multi-focal.mddoc1,034 bytesreferences/layouts/multi-scale.mddoc941 bytesreferences/layouts/nine-grid.mddoc791 bytesreferences/layouts/nonlinear-path.mddoc956 bytesreferences/layouts/one-way-flow.mddoc938 bytesreferences/layouts/overlapping.mddoc983 bytesreferences/layouts/panorama.mddoc942 bytesreferences/layouts/periodic-table.mddoc783 bytesreferences/layouts/random-scatter.mddoc1,016 bytesreferences/layouts/s-curve.mddoc953 bytesreferences/layouts/scene-unfolding.mddoc986 bytesreferences/layouts/single-focal-point.mddoc1,000 bytesreferences/layouts/single-object-art.mddoc909 bytesreferences/layouts/skewed-grid.mddoc913 bytesreferences/layouts/speech-bubbles.mddoc1,202 bytesreferences/layouts/spiral-vortex.mddoc916 bytesreferences/layouts/step-staircase.mddoc940 bytesreferences/layouts/story-mountain.mddoc813 bytesreferences/layouts/storyboard.mddoc1,175 bytesreferences/layouts/strong-perspective.mddoc941 bytesreferences/layouts/structural-breakdown.mddoc1,117 bytesreferences/layouts/swimlane.mddoc962 bytesreferences/layouts/swiss-grid.mddoc945 bytesreferences/layouts/text-wrap.mddoc947 bytesreferences/layouts/three-tier.mddoc1,151 bytesreferences/layouts/tile-layout.mddoc859 bytesreferences/layouts/top-image-bottom-text.mddoc868 bytesreferences/layouts/tree-branching.mddoc908 bytesreferences/layouts/ultra-minimalist.mddoc899 bytesreferences/layouts/venn-diagram.mddoc833 bytesreferences/layouts/visual-first.mddoc907 bytesreferences/layouts/visual-tension.mddoc985 bytesreferences/layouts/wave-path.mddoc910 bytesreferences/layouts/winding-roadmap.mddoc793 bytesreferences/layouts/z-pattern.mddoc1,037 bytesreferences/prompt-writing-rules.mddoc2,446 bytesreferences/prompts-critic-system.mddoc3,957 bytesreferences/prompts-expand-system.mddoc4,699 bytesreferences/runtime-parameters.mddoc3,934 bytesreferences/structured-content-template.mddoc5,767 bytesreferences/styles/aged-academia.mddoc990 bytesreferences/styles/art-deco.mddoc710 bytesreferences/styles/art-nouveau.mddoc950 bytesreferences/styles/baroque.mddoc858 bytesreferences/styles/bauhaus.mddoc738 bytesreferences/styles/cartoon-flat.mddoc627 bytesreferences/styles/chalkboard.mddoc2,204 bytesreferences/styles/chinese-guochao.mddoc850 bytesreferences/styles/claymation.mddoc654 bytesreferences/styles/corporate-memphis.mddoc612 bytesreferences/styles/crayon-hand-drawn.mddoc709 bytesreferences/styles/cubism.mddoc864 bytesreferences/styles/cyberpunk.mddoc740 bytesreferences/styles/data-visualization.mddoc919 bytesreferences/styles/deconstructivism.mddoc967 bytesreferences/styles/double-exposure.mddoc872 bytesreferences/styles/expressionism.mddoc830 bytesreferences/styles/fashion-editorial.mddoc890 bytesreferences/styles/film-photography.mddoc814 bytesreferences/styles/flat-design.mddoc841 bytesreferences/styles/fractal-art.mddoc853 bytesreferences/styles/geometric-burst.mddoc875 bytesreferences/styles/glitch-art.mddoc684 bytesreferences/styles/high-contrast-ad.mddoc678 bytesreferences/styles/holographic.mddoc823 bytesreferences/styles/ikea-manual.mddoc572 bytesreferences/styles/impressionism.mddoc833 bytesreferences/styles/instructional-visual.mddoc967 bytesreferences/styles/kawaii.mddoc653 bytesreferences/styles/knolling.mddoc584 bytesreferences/styles/lego-brick.mddoc574 bytesreferences/styles/line-drawing.mddoc812 bytesreferences/styles/liquid-metal.mddoc793 bytesreferences/styles/luxury-minimal.mddoc691 bytesreferences/styles/marker-style.mddoc798 bytesreferences/styles/material-design.mddoc810 bytesreferences/styles/minimalism.mddoc836 bytesreferences/styles/mixed-media.mddoc990 bytesreferences/styles/modern-ink-wash.mddoc744 bytesreferences/styles/monochrome-illustration.mddoc811 bytesreferences/styles/neon-futurism.mddoc663 bytesreferences/styles/newspaper-collage.mddoc875 bytesreferences/styles/op-art.mddoc1,008 bytesreferences/styles/origami.mddoc607 bytesreferences/styles/paper-collage.mddoc949 bytesreferences/styles/parametric-design.mddoc907 bytesreferences/styles/pen-sketch.mddoc754 bytesreferences/styles/pixel-art.mddoc562 bytesreferences/styles/scandinavian.mddoc927 bytesreferences/styles/sci-fi-ui.mddoc741 bytesreferences/styles/screen-print.mddoc928 bytesreferences/styles/storybook-watercolor.mddoc703 bytesreferences/styles/subway-map.mddoc591 bytesreferences/styles/surreal-collage.mddoc929 bytesreferences/styles/surrealism.mddoc779 bytesreferences/styles/swiss-style.mddoc916 bytesreferences/styles/synthwave.mddoc885 bytesreferences/styles/tech-brand.mddoc713 bytesreferences/styles/technical-diagram.mddoc937 bytesreferences/styles/technical-schematic.mddoc988 bytesreferences/styles/thick-paint.mddoc756 bytesreferences/styles/ui-wireframe.mddoc611 bytesreferences/styles/ukiyo-e.mddoc960 bytesreferences/styles/vaporwave.mddoc728 bytesreferences/styles/vintage-poster.mddoc966 bytesreferences/styles/woodcut.mddoc922 bytes
Read SKILL.md
# sn-infographic
Info graphic generation scene skill (tier 1), relying on the `sn-image-generate`, `sn-image-recognize`, and `sn-text-optimize` tools provided by `sn-image-base` (tier 0).
Features:
- Evaluation of prompt quality (auto mode)
- Prompt expansion (force/auto mode)
- Multiple rounds of image generation and VLM review
- Output the best result based on quality ranking
## Input Specification
| Parameter | Type | Default Value | Description |View the complete source on GitHubsn-md-to-html-report
When your agent uses it
将 Markdown 报告、研究笔记、行业分析、战略备忘录、技术白皮书、复盘、周报等长文档,重组并创作为有编辑判断、网页美感和证据秩序的自包含 HTML 专题页。用户要求“转成 HTML”“网页化报告”“美化报告”“做成专题页”“便于分享”“提升可读性/设计感”“把报告做成网页”时使用。必须先写 plan.md 再写 HTML,保留原文事实断言和结论强度,不套模板,不做机械 Markdown 转换。
What it loads into context
Frontmatter
142 tokensAlways available to the agent
SKILL.md
2,297 tokensWhen the skill is activated
Reference documents
5,933 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 设计判断原则
- 设计知识的使用方式
- 硬规则
- 工作流
- plan.md 必须包含
- 参考文件
- HTML 要求
Files
SKILL.mdcore8,625 bytesreferences/01-aesthetic-direction.mddoc5,483 bytesreferences/02-layout-and-content-design.mddoc6,669 bytesreferences/03-design-contract.mddoc4,723 bytesreferences/04-review-angles.mddoc3,668 bytes
Read SKILL.md
# Report HTML
把报告文本创作为一份有编辑判断、网页美感、证据秩序、且只属于这份主题的单文件 HTML。
核心原则:**保留事实断言,重构阅读和视觉体验,让设计从报告所属领域和内容任务里长出来。主题自己的世界——它的材质、工具、器物与语汇——是产生独特设计选择的来源。**
## 设计判断原则
- **首屏即论点**:首屏先找到这份报告所属领域里最有识别度、最能承载主题气质的事物或机制,并用最适合它的形式呈现:标题、图片、动画、实时演示或一个可互动瞬间。这个选择必须有明确判断;不要默认使用“大数字 + 小标签 + 辅助统计 + 渐变强调”,只有当它确实是主题最自然、最有力的入口时才使用。
- **文字系统承载页面性格**:标题字体与正文字体要被有意搭配,不要沿用任何项目都能套上的常用字体组合;同时建立清晰的字阶,并有意识地设置字重、字宽和间距。让文字排印本身成为设计中可被记住的一部分,而不是只负责传递内容的中性容器。
- **结构即信息**:编号、眉题、分隔线、标签等结构性手段,应该传递内容的真实信息,而不是装饰内容。许多通用设计都使用编号标记(01/02/03),但这仅适用于内容本身就是一个序列的情况——例如一个真实的流程或一份文字时间线,其中顺序承载着读者所需的信息。在使用编号标记之前,请先思考其是否真的有意义。
- **有意识地使用动效**:先判断动效是否能服务主题、阅读或信息理解,再决定用在哪里:页面加载序列、滚动触发展示、悬停微交互或环境氛围。一个被编排好的关键动效通常比零散特效更有力量;动效选择必须服从整体美学方向。有些主题更适合克制处理,额外动画反而会削弱专业感,并让页面显得像 AI 生成的模板作品。
- **复杂度匹配愿景**:视觉方向越繁复,执行就越需要足够的层次、细节和完成度;视觉方向越极简,间距、字阶、对齐和微细节就越要精准。优雅不等于少,也不等于多,而是把选定的方向执行到位。
- **认真处理文案**:标题、导语、标签、按钮和说明都要被当作设计的一部分处理。可以对源报告的内容重写、压缩、合并和组织表达,但不得发明事实、口径或结论强度。文案和视觉一样会产生模板感。View the complete source on GitHubsn-motion-html
When your agent uses it
Build continuous-shot motion-driven HTML stories from a subject or narrative, including research, story structure, consistent AI stills, Seedance scene and connector clips, interface styling, media normalization, and browser QA. Use for immersive journeys, timelines, product stories, fictional worlds, or other scene-based visual narratives whose camera should flow from beginning to end; not for ordinary autoplay video pages or general web apps.
What it loads into context
Frontmatter
88 tokensAlways available to the agent
SKILL.md
1,760 tokensWhen the skill is activated
Reference documents
6,083 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Route the work
- Required user approval gates
- Start from the template
- Production invariants
- Validation
Scripts executed separately
assets/template/src/app.jsassets/template/src/motion-runtime.jsscripts/contact_sheet.pyscripts/init_project.pyscripts/make_posters.pyscripts/seedance_pipeline.pyscripts/serve_project.pyscripts/verify_media.pytests/motion-runtime.test.cjs
Files
SKILL.mdcore9,303 bytesSKILL.mdcore9,303 bytesSKILL.mdcore9,303 bytesagents/openai.yamlasset269 bytesassets/style-presets/anime.jsonasset1,033 bytesassets/style-presets/cgi.jsonasset1,000 bytesassets/style-presets/cinematic.jsonasset1,021 bytesassets/template/.env.exampleasset179 bytesassets/template/.gitignoreasset102 bytesassets/template/content/story.jsonasset1,843 bytesassets/template/index.htmlasset832 bytesassets/template/prompts/style-motion.txtdoc237 bytesassets/template/prompts/style-preamble.txtdoc182 bytesassets/template/prompts/video-manifest.jsonasset993 bytesassets/template/prompts/video/connectors/01-opening-to-destination.txtdoc482 bytesassets/template/prompts/video/dives/01-opening.txtdoc337 bytesassets/template/prompts/video/dives/02-destination.txtdoc337 bytesassets/template/src/app.jsruns2,490 bytesassets/template/src/motion-runtime.jsruns18,440 bytesassets/template/styles.cssasset12,662 bytesreferences/frontend.mddoc6,525 bytesreferences/prompting.mddoc6,375 bytesreferences/schemas.mddoc2,896 bytesreferences/seedance.mddoc3,894 bytesreferences/style-presets.mddoc3,681 bytesreferences/workflow.mddoc6,685 bytesscripts/contact_sheet.pyruns2,720 bytesscripts/init_project.pyruns3,276 bytesscripts/make_posters.pyruns1,254 bytesscripts/seedance_pipeline.pyruns12,550 bytesscripts/serve_project.pyruns1,557 bytesscripts/verify_media.pyruns2,227 bytestests/motion-runtime.test.cjsruns9,473 bytes
Read SKILL.md
# SN Motion HTML
Create a reusable project, not a one-off HTML file. Keep subject matter, chapter count, visual style, interface treatment, copy placement, language, image model, video model, clip duration, and hosting path configurable.
The defining experience is one continuous camera journey controlled by page progress. Preserve a single fixed media stage and one ordered timeline from the first scene through every connector to the final scene. Differentiate projects through transparent copy composition, header treatment, type, navigation, and scene-specific copy placement—not by replacing the continuous stage with separate article media blocks.
## Route the work
1. Resolve the story goal, audience, factual fidelity, chapter scale, visual language, copy language, target devices, sound policy, and available API credentials. Make reasonable defaults only for low-risk implementation details.
2. For factual or source-based stories, research before outlining and record sources separately from display copy.
3. Plan chapters, recurring identities and connector paths before generating their boundary images; use [references/prompting.md](references/prompting.md) for shot planning and acceptance criteria.
4. Detect the image-generation capability available in the current environment before generating any stills. The capability may be a callable image tool, a skill that exposes or instructs an image workflow, or both. Use the available capability when present; if no suitable capability is available, report that blocker to the user before continuing past the still-generation stage.
5. Prepare a review package containing the proposed visual style and the content/shot arrangement. When an image capability is available, generate only the small reference/gate set needed for review.
6. Obtain the user's explicit approval at both approval gates below. After approval, generate the complete still set and inspect it before any paid video batch.View the complete source on GitHubsn-ppt-creative
When your agent uses it
Use when a prepared PPT task with a current outline.md should be generated as an image-first presentation with one 16:9 image per slide and optional PPTX packaging.
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
2,250 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 前置与目录边界
- 公共 Story 契约
- 设计丰富度
- 产物
- 恢复
- 工作流
- 进度与收尾
- 硬规则
Scripts executed separately
scripts/build_pptx.pyscripts/resume_scan.pyscripts/sanitize_prompt.py
Files
SKILL.mdcore8,168 bytesSKILL.mdcore8,168 bytesSKILL.mdcore8,168 bytesSKILL.mdcore8,168 bytesSKILL.mdcore8,168 bytesrequirements.txtdoc20 bytesscripts/build_pptx.pyruns3,810 bytesscripts/resume_scan.pyruns1,551 bytesscripts/sanitize_prompt.pyruns4,745 bytes
Read SKILL.md
# sn-ppt-creative
把公共 Story 转译成一套 16:9 整页视觉:每页生成一张完整 PNG,并可组装为 PPTX。
Creative 负责视觉转译,不负责 Research,不生成自己的内容大纲。
## 前置与目录边界
必须存在:
- `<DECK_DIR>/task_pack.json`
- `<DECK_DIR>/info_pack.json`
- `<DECK_DIR>/outline.md`
- `task_pack.choices.output == "creative"`,或旧任务的 `ppt_mode == "creative"`
View the complete source on GitHubsn-ppt-dazzle
When your agent uses it
需要把演示 / 幻灯片 / PPT / slides 做成单文件 HTML 动态 deck(动效、跨页过渡、键盘翻页、1280×720)时使用。本 skill 非入口:使用前必须先确认 sn-ppt-entry 与 sn-ppt-story 两个前置 skill 可用,依次执行 entry(建 DECK_DIR / task_pack.json)→ story(生成 outline.md)完成后才可开始;前置缺失或未完成时停止并回报,严禁绕过(如改用生图+手写 HTML 等方式)。
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
12,314 tokensWhen the skill is activated
Reference documents
15,940 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 0. Entry / Story 输入契约(最高优先级)
- 1. 产物与边界
- 2. 工作流(六阶段)
- 3. 场景适配:fancy 的边界
- 4. deck 架构契约(骨架必须满足)
- 5. 渲染自检清单
- 6. 配图与生图(image_generate 可用时)
- 7. 美学底线(反 AI slop)与绚哲学
- 8. 工程避坑(常见 bug,写代码前过一遍)
- 9. references
Scripts executed separately
scripts/render_deck.py
Files
SKILL.mdcore40,820 bytesSKILL.mdcore40,820 bytesSKILL.mdcore40,820 bytesSKILL.mdcore40,820 bytesreferences/fancy-cookbook.mddoc39,260 bytesreferences/style-families.mddoc10,015 bytesscripts/render_deck.pyruns26,654 bytes
Read SKILL.md
# sn-ppt-dazzle:单 HTML 炫彩演示 deck
你要交付的不是一份"幻灯片",而是一场在浏览器里上演的**动态视觉演出**:持续运行的动态背景、每页的入场编排、页间的过渡特效、键盘可交互——同时排版严谨、内容真实、零控制台报错。
## 0. Entry / Story 输入契约(最高优先级)
本 Skill 不是用户请求入口,不直接接收裸 query 或附件创建新任务。只接受
`sn-ppt-entry` 传入的绝对 `DECK_DIR`,并且必须已经存在:
- `<DECK_DIR>/task_pack.json`;
- `<DECK_DIR>/info_pack.json`;
- `<DECK_DIR>/outline.md`;
- `task_pack.choices.output == "dynamic_html"`,或旧任务的 `ppt_mode == "dazzle"`。
View the complete source on GitHubsn-ppt-doctor
When your agent uses it
Use when diagnosing PPT Skill setup or failures involving source parsing, Playwright or Chromium rendering, HTML-to-PPTX export, Workbench startup, or bundled search and image-tool configuration.
What it loads into context
Frontmatter
93 tokensAlways available to the agent
SKILL.md
1,443 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 持久配置
- 检查内容
- 原生工具有效性
- 调用
Scripts executed separately
ppt_doctor/check_environment.py
Files
SKILL.mdcore5,550 bytesSKILL.mdcore5,550 bytesSKILL.mdcore5,550 bytesSKILL.mdcore5,550 bytesSKILL.mdcore5,550 bytesSKILL.mdcore5,550 bytesppt_doctor/check_environment.pyruns22,373 bytesrequirements.txtdoc41 bytes
Read SKILL.md
# sn-ppt-doctor
这是按需运行的能力与本地依赖检查,不是 Entry 的强制前置。Doctor 分开报告:
1. 当前 Agent 的普通搜索、图片搜索和图片生成原生工具是否注册、配置或实际验证;
2. PPT 整包自带的 `sn-ppt-tools` 是否存在并已配置。
Doctor 不检查或恢复 `sn_agent_runner.py`,不写 `.env`,也不把可选媒体能力变成硬门槛。
## 持久配置
PPT 内置工具与 Doctor 自动读取:
- Hermes:`~/.hermes/.env`View the complete source on GitHubsn-ppt-entry
When your agent uses it
Use when a user asks to create a presentation, slide deck, PPT, or PPTX from a query and optional files, or to resume an existing SenseNova presentation task.
What it loads into context
Frontmatter
112 tokensAlways available to the agent
SKILL.md
4,811 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Box-Agent 兼容入口
- 三个独立选择
- 唯一目录规则
- `task_pack.json`
- `info_pack.json`
- 可选搜索与图像能力
- 新任务流程
- 恢复规则
- 进度反馈
- 硬规则
Scripts executed separately
scripts/parse_user_docs.pyscripts/timing_helper.py
Files
SKILL.mdcore17,976 bytesSKILL.mdcore17,976 bytesSKILL.mdcore17,976 bytesrequirements.txtdoc41 bytesscripts/parse_user_docs.pyruns11,657 bytesscripts/timing_helper.pyruns2,753 bytes
Read SKILL.md
# sn-ppt-entry
统一接收 PPT 生成请求,建立唯一任务目录,准备材料。Standard 先完成定向外部证据补充,
Deep 先完成完整 Research,**下一步必须调用 `sn-ppt-story` 生成公共 `outline.md`**,再按 `choices.output` 分发到 `sn-ppt-standard`、`sn-ppt-dazzle` 或 `sn-ppt-creative`。
这是一套 Skill 的入口,不是独立运行时。文本理解、视觉理解和推理使用宿主 Agent
已有能力。普通搜索、图片搜索和图片生成优先使用宿主原生工具;原生能力不存在或实际
调用不可用时,才使用 PPT 整包自带的 `sn-ppt-tools`。不得要求用户另外配置模型客户端,
不得调用 `model_client.py`、`stage.py` 或为本流程再造 CLI 调度层。
## Box-Agent 兼容入口
在 Box-Agent 中,从本次加载的 Skill 提示取得 Entry 的绝对 Skill Root,记为
`<ENTRY_SKILL_ROOT>`。Entry 的所有确定性脚本都必须使用View the complete source on GitHubsn-ppt-standard
When your agent uses it
仅在 `sn-ppt-entry` 与 `sn-ppt-story` 已准备绝对 `DECK_DIR` 和 `outline.md` 后使用;生成每页独立 HTML(1600×900)、渲染 PNG、逐页讲稿、`present.html`,并按 `static_postprocess` 选择生成由 Standard 自有 exporter 转换的 PPTX。**`present.html` 始终是必交付产物,缺失即技术故障,不得交付;`static_postprocess` 含 `pptx` 时 PPTX 同为必交付产物(缺一即技术故障),且只能由 Standard 自有 exporter 生成;仅当用户明确要求只要 HTML(`static_postprocess` 为 `[]`)时,PPTX 才可不交付。**
What it loads into context
Frontmatter
187 tokensAlways available to the agent
SKILL.md
12,481 tokensWhen the skill is activated
Reference documents
75,782 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Box-Agent 兼容入口
- Hermes 环境等效工具
- Entry / Story 输入契约(最高优先级)
- 1. 所有模式共享的合同
- 2. 新建 PPT
- 3. 编辑 PPT
- 4. 硬红线
- 5. 确定性脚本
Scripts executed separately
assets/vendor/echarts.min.jsscripts/deck.pyscripts/export_pptx/html_to_pptx.mjsscripts/export_pptx/lib/browser_picker.mjsscripts/export_pptx/lib/cli_guards.mjsscripts/export_pptx/lib/dom_extractor.mjsscripts/export_pptx/lib/echarts_discovery.mjsscripts/export_pptx/lib/echarts_to_pptx.mjsscripts/export_pptx/lib/image_downloader.mjsscripts/export_pptx/lib/postprocess_pptx.mjsscripts/export_pptx/lib/pptx_builder.mjsscripts/export_pptx/lib/style_parser.mjsscripts/export_pptx/package.jsonscripts/export_pptx/screenshot.mjsscripts/export_pptx/test/test_color_srgb_regression.mjsscripts/export_pptx/test/test_dom_layout_regression.mjsscripts/export_pptx/test/test_echarts_discovery.mjsscripts/export_pptx/test/test_echarts_fallback.mjsscripts/export_pptx/test/test_echarts_to_pptx_regression.mjsscripts/export_pptx/test/test_radial_overlay_regression.mjsscripts/export_pptx/test/test_text_box_padding_regression.mjsscripts/font_bundle.pyscripts/image_cutout.pyscripts/install.shscripts/render.pyscripts/serper_images.pyscripts/stage_materials.py
Files
SKILL.mdcore46,327 bytesSKILL.mdcore46,327 bytesSKILL.mdcore46,327 bytesSKILL.mdcore46,327 bytesSKILL.mdcore46,327 bytesagents/openai.yamlasset350 bytesassets/licenses/OFL-1.1.txtdoc4,008 bytesassets/vendor/echarts.min.jsruns1,029,203 bytesreferences/base-template.cssasset35,366 bytesreferences/box-agent-tool-contract.mddoc5,859 bytesreferences/design-rules.mddoc64,317 bytesreferences/design-styles.mddoc26,842 bytesreferences/editing-contract.mddoc5,019 bytesreferences/fonts.mddoc10,541 bytesreferences/layout-patterns.mddoc17,700 bytesreferences/planning-contract.mddoc27,679 bytesreferences/quality-checklist.mddoc30,881 bytesscripts/deck.pyruns59,960 bytesscripts/export_pptx/html_to_pptx.mjsruns6,492 bytesscripts/export_pptx/lib/browser_picker.mjsruns5,604 bytesscripts/export_pptx/lib/cli_guards.mjsruns14,837 bytesscripts/export_pptx/lib/dom_extractor.mjsruns37,842 bytesscripts/export_pptx/lib/echarts_discovery.mjsruns1,262 bytesscripts/export_pptx/lib/echarts_to_pptx.mjsruns30,704 bytesscripts/export_pptx/lib/image_downloader.mjsruns4,160 bytesscripts/export_pptx/lib/postprocess_pptx.mjsruns7,080 bytesscripts/export_pptx/lib/pptx_builder.mjsruns86,943 bytesscripts/export_pptx/lib/style_parser.mjsruns19,259 bytesscripts/export_pptx/package-lock.jsonasset9,293 bytesscripts/export_pptx/package.jsonruns268 bytesscripts/export_pptx/screenshot.mjsruns2,790 bytesscripts/export_pptx/test/fixtures/dom-layout-regression.htmlasset758 bytesscripts/export_pptx/test/fixtures/echarts-fallback.htmlasset1,214 bytesscripts/export_pptx/test/test_color_srgb_regression.mjsruns881 bytesscripts/export_pptx/test/test_dom_layout_regression.mjsruns1,559 bytesscripts/export_pptx/test/test_echarts_discovery.mjsruns1,484 bytesscripts/export_pptx/test/test_echarts_fallback.mjsruns2,086 bytesscripts/export_pptx/test/test_echarts_to_pptx_regression.mjsruns2,343 bytesscripts/export_pptx/test/test_radial_overlay_regression.mjsruns1,055 bytesscripts/export_pptx/test/test_text_box_padding_regression.mjsruns675 bytesscripts/font_bundle.pyruns39,825 bytesscripts/image_cutout.pyruns14,589 bytesscripts/install.shruns13,098 bytesscripts/render.pyruns97,048 bytesscripts/serper_images.pyruns4,262 bytesscripts/stage_materials.pyruns38,514 bytessubagents/image.mddoc14,655 bytessubagents/review.mddoc26,614 bytessubagents/slide.mddoc24,433 bytes
Read SKILL.md
# sn-ppt-standard
把本文件当作**路线图**,不要当作需要一次背完的规范全集。只读取已准备任务的 Entry/Story 交接、该路径要求的 reference 和职责卡。
## Box-Agent 兼容入口
当当前 harness 暴露 `sub_agent`、`inspect_images`、`generate_image`、`bash` 等 Box-Agent 原生工具时,开始任何制作动作前必须完整读取 `references/box-agent-tool-contract.md`。该契约只覆盖工具名称、参数、脚本路径、委派方式和权限边界;本文件及各职责卡的事实、设计、质量和交付标准仍然有效。委派任何角色时,都要在 `task` 中显式要求其先读取同一契约与自己的 `subagents/<role>.md`。
## Hermes 环境等效工具
Hermes 不暴露 Box-Agent 工具名,但提供等价能力。在 Hermes 宿主中,正文下文中出现的
`bash` / `inspect_images` / `generate_image` / `sub_agent` 调用一律按下表翻译后执行,
且无须读取 `references/box-agent-tool-contract.md`(该契约仅用于 Box-Agent harness):
View the complete source on GitHubsn-ppt-story
When your agent uses it
当前 PPT 任务已由 sn-ppt-entry 建好 DECK_DIR(task_pack.json 与 info_pack.json 已写入)后,必须由本 skill 将 query、全部用户材料与已完成 Research 编排为唯一可编辑的 outline.md 时使用。本 skill 是 entry → 出口(standard / dazzle / creative)之间的强制中间环节:不允许执行 Agent 跳过本 skill 直接依据 task_pack / info_pack 即兴编写大纲,不允许出口 skill 代写或改写大纲;前置产物缺失时停止并返回 sn-ppt-entry 补齐,不得自行补做研究。
What it loads into context
Frontmatter
211 tokensAlways available to the agent
SKILL.md
2,122 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 输入边界
- 输出和状态
- 工作方法
- `outline.md` 格式
- 新建与修改
- 与出口的契约
- 不得做
Files
SKILL.mdcore8,087 bytes
Read SKILL.md
# sn-ppt-story
把 query、全部用户材料和已经完成的研究综合成一份清楚、完整、可直接修改的
`outline.md`。Story 统一管理内容理解和页面叙事,不生成页面,不自行开展外部研究。
## 输入边界
只接受 Entry 传入的绝对 `DECK_DIR`。开始前读取:
- `<DECK_DIR>/task_pack.json`
- `<DECK_DIR>/info_pack.json`
- `info_pack.raw_documents` 指向的完整 `raw_documents.json`(存在时)
- `info_pack.research_report` 指向的 Research 主报告(存在时)
- 用户明确要求读取的其他源文件View the complete source on GitHubsn-ppt-tools
When your agent uses it
Use when another PPT Skill needs web search, image search or download, or image generation and the host Agent's equivalent native capability is absent or has failed.
What it loads into context
Frontmatter
66 tokensAlways available to the agent
SKILL.md
884 tokensWhen the skill is activated
Reference documents
771 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 持久配置
- 普通搜索
- 图片搜索与下载
- 图片生成
- 输出与失败
Scripts executed separately
scripts/env_config.pyscripts/fetch_image.pyscripts/image_generate.pyscripts/image_search.pyscripts/web_search.py
Files
SKILL.mdcore3,084 bytesSKILL.mdcore3,084 bytesSKILL.mdcore3,084 bytesSKILL.mdcore3,084 bytesSKILL.mdcore3,084 bytesreferences/capability-policy.mddoc2,996 bytesscripts/env_config.pyruns2,652 bytesscripts/fetch_image.pyruns4,572 bytesscripts/image_generate.pyruns8,747 bytesscripts/image_search.pyruns4,535 bytesscripts/web_search.pyruns5,422 bytes
Read SKILL.md
# sn-ppt-tools
这是 PPT Skill 整包自带的备用工具,不是独立内容生产流程。调用前先读
`references/capability-policy.md`。宿主 Agent 的等价原生工具始终优先;只有原生能力
不存在或一次实际调用确认不可用时,才调用这里的脚本。
## 持久配置
四个脚本每次启动都会自动加载一个用户级 `.env`:
1. 设置了 `SN_PPT_ENV_FILE` 时读取该文件;
2. OpenClaw 读取 `~/.openclaw/.env`;
3. 其他环境默认读取 `~/.hermes/.env`。
View the complete source on GitHubsn-ppt-workbench
When your agent uses it
Use when the user asks to open, preview, inspect, or visually edit an existing SenseNova HTML presentation in the PPT Workbench, using an explicit deck_dir or the latest deck in the current workspace.
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
2,628 tokensWhen the skill is activated
Reference documents
1,433 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Use Cases
- Hard Rules
- Invocation
- CLI Subcommands (direct launch fallback)
- Bind Host
- Output Handling
- Environment
- Gateway Auth Setup
- Progress Echo
Scripts executed separately
scripts/open_workbench.pyworkbench-runtime/bin/sensenova-ppt-workbench.mjsworkbench-runtime/dist-server/index.mjsworkbench-runtime/dist/assets/MarkdownArtifactViewer-DxLTmGwT.jsworkbench-runtime/dist/assets/index-DZ8oHsQz.jsworkbench-runtime/examples/sensenova-basic/assets/echarts.min.jsworkbench-runtime/package.json
Files
SKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesSKILL.mdcore10,167 bytesreferences/gateway-auth.mddoc5,518 bytesscripts/open_workbench.pyruns21,441 bytesworkbench-runtime/bin/sensenova-ppt-workbench.mjsruns19,960 bytesworkbench-runtime/dist-server/index.mjsruns1,925,515 bytesworkbench-runtime/dist/assets/MarkdownArtifactViewer-DxLTmGwT.jsruns110,452 bytesworkbench-runtime/dist/assets/index-DZ8oHsQz.jsruns516,631 bytesworkbench-runtime/dist/assets/index-Hn-wCKPf.cssasset126,086 bytesworkbench-runtime/dist/favicon.svgasset9,522 bytesworkbench-runtime/dist/index.htmlasset519 bytesworkbench-runtime/dist/sensetime-mark.pngasset25,072 bytesworkbench-runtime/examples/sensenova-basic/asset_plan.jsonasset2,805 bytesworkbench-runtime/examples/sensenova-basic/assets/echarts.min.jsruns1,034,102 bytesworkbench-runtime/examples/sensenova-basic/info_pack.jsonasset384 bytesworkbench-runtime/examples/sensenova-basic/outline.jsonasset4,704 bytesworkbench-runtime/examples/sensenova-basic/pages/page_001.htmlasset10,925 bytesworkbench-runtime/examples/sensenova-basic/pages/page_001.query.txtdoc1,597 bytesworkbench-runtime/examples/sensenova-basic/pages/page_002.htmlasset9,555 bytesworkbench-runtime/examples/sensenova-basic/pages/page_002.query.txtdoc1,451 bytesworkbench-runtime/examples/sensenova-basic/pages/page_003.htmlasset15,426 bytesworkbench-runtime/examples/sensenova-basic/pages/page_003.query.txtdoc1,679 bytesworkbench-runtime/examples/sensenova-basic/pages/page_004.htmlasset5,737 bytesworkbench-runtime/examples/sensenova-basic/pages/page_004.query.txtdoc1,727 bytesworkbench-runtime/examples/sensenova-basic/style_spec.jsonasset560 bytesworkbench-runtime/examples/sensenova-basic/task_pack.jsonasset576 bytesworkbench-runtime/package.jsonruns422 bytes
Read SKILL.md
# sn-ppt-workbench
Start or reuse the AI PPT editing WebUI for an existing HTML slide deck. The
helper prefers Hermes/canvas/port-forward URLs when available. Without a
forwarded URL, native hosts bind to localhost by default, while Docker/WSL bind
to `0.0.0.0` so remote users can reach the WebUI through the host network.
## Use Cases
- The user already generated a deck and asks to open the WebUI/editor/workbench.
- The user provides a `deck_dir` containing `task_pack.json`,
`slides/slide_NN.html`, `pages/page_NNN.html`, or a root-level HTML deck.
- The user says to inspect or edit previously generated slides without regenerating them.
View the complete source on GitHubsn-prepare-citations
When your agent uses it
用于终稿完成且脚注需要后处理时:去重 [^key] 引用,转换为 [N] 编号,并追加参考文献。
What it loads into context
Frontmatter
45 tokensAlways available to the agent
SKILL.md
709 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 推荐用法(sn-deep-research v2)
- 参数
- 处理逻辑
- 控制器处理要求
- 旧兼容模式
Scripts executed separately
scripts/prepare_citations.py
Files
SKILL.mdcore2,381 bytesSKILL.mdcore2,381 bytesSKILL.mdcore2,381 bytesSKILL.mdcore2,381 bytesscripts/prepare_citations.pyruns20,743 bytes
Read SKILL.md
# sn-prepare-citations(引用渲染)
处理 sn-deep-research 的 `stitched.md`:从 evidence.json 收集 `sources[]`,将正文中的 `[^source_id]` 转换为 `[N]` 编号引用,插入 L0/TOC,并追加参考文献。
## 推荐用法(sn-deep-research v2)
```bash
python3 scripts/prepare_citations.py \
--report <report_dir>/stitched.md \
--evidence <report_dir>/sub_reports/d1.evidence.json <report_dir>/sub_reports/d2.evidence.json \
--outline <report_dir>/outline.json \
--output <report_dir>/report.md
```
View the complete source on GitHubsn-proactive-agent
When your agent uses it
安装、启动和使用 Proactive Agent,记录项目进展并在合适时机提醒下一步。
What it loads into context
Frontmatter
33 tokensAlways available to the agent
SKILL.md
1,155 tokensWhen the skill is activated
Reference documents
8,899 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 按任务读取说明
- 命名与命令
- 运行边界
- 查看记录
Files
SKILL.mdcore4,625 bytesreferences/connectors/hermes.mddoc7,717 bytesreferences/connectors/openclaw.mddoc5,227 bytesreferences/install/macos.mddoc3,674 bytesreferences/install/overview.mddoc10,862 bytesreferences/install/windows.mddoc5,842 bytes
Read SKILL.md
# Proactive Agent
本 Skill 是 Agent 的操作说明,运行代码通过独立的 Python 安装包获取。
服务整理多轮对话中的项目进展,发现值得推进的事情时在 Web 工作台提出建议;
用户接受后,由对应 Connector 交回原 Session 继续执行。
## 按任务读取说明
- 询问原理、状态或已有记录时,只做相关的只读检查,不因加载 Skill 就安装、改配置或启动服务。
- 用户要求安装、启动、升级或卸载时,先读 [通用流程](references/install/overview.md),再按实际运行环境读取一份系统说明。
- 配置对话接入时,只读取当前 Harness 对应的 Connector 说明,不加载其他平台的资料。
| 条件 | 读取文件 |
|---|---|View the complete source on GitHubsn-report-format-discovery
When your agent uses it
用于用户希望推荐研究成品形式,或最终形式无法从需求中直接判断时。把需求解析为一个简短的 format 字符串,不创建格式文件或 schema。
What it loads into context
Frontmatter
50 tokensAlways available to the agent
SKILL.md
316 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 输入
- 规则
- 输出
Files
SKILL.mdcore1,266 bytes
Read SKILL.md
# 最终形式推荐
根据用户需求确定一个请求级 `format` 字符串。该字符串和 `language` 一样只在本次运行上下文中传递,不写入文件。
## 输入
- 原始研究需求 `query`
- 请求级 `language`
- 用户明确提出的最终形式(如有)
## 规则
1. 用户明确指定最终形式时,优先使用用户的名称。
2. 用户未指定时,根据主要阅读任务选择一个简短名称;无法判断时使用 `report`。View the complete source on GitHubsn-research-report
When your agent uses it
用于撰写或组织研究报告结构。按读者认知任务(全景/对比/调查/时序)和领域惯例(学术/医疗/法律/政策)选择报告模板。
What it loads into context
Frontmatter
56 tokensAlways available to the agent
SKILL.md
3,066 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 模板选择
- 基础结构一:全景叙述型
- 基础结构二:对比选型型
- 基础结构三:实体调查型
- 基础结构四:时序追踪型
- 领域专属模板
- 微观格式规则
- 执行纪律
Files
SKILL.mdcore10,578 bytes
Read SKILL.md
# sn-research-report(研究报告结构模板)
报告结构的决定因素是**读者需要完成的认知任务**,不是研究的信息领域。同一批信息,为做决策而读和为建立全貌而读,需要完全不同的组织方式。
## 模板选择
```dot
digraph select {
"研究任务" [shape=doublecircle];
"领域专属?" [shape=diamond];
"主认知任务?" [shape=diamond];
"学术综述" [shape=box];
"医疗健康" [shape=box];
"法律研究" [shape=box];View the complete source on GitHubsn-search-academic
When your agent uses it
用于学术调研、论文精读、相关工作梳理、百科知识查询和引用链追溯。
What it loads into context
Frontmatter
36 tokensAlways available to the agent
SKILL.md
4,322 tokensWhen the skill is activated
Reference documents
5,902 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 凭证配置
- 可用脚本
- 执行约定
- 依赖
- 参数说明
- 输出格式
- 并发与限流约定
- 全文阅读工作流
- 引用追溯工作流
- 主工作流
- ArXiv 分类速查
Scripts executed separately
scripts/arxiv_crawler_search.pyscripts/arxiv_mirror_search.pyscripts/arxiv_paper.pyscripts/arxiv_pdf_paper.pyscripts/arxiv_search.pyscripts/crossref_search.pyscripts/deepxiv_paper.pyscripts/deepxiv_search.pyscripts/google_scholar_search.pyscripts/openalex_search.pyscripts/paper.pyscripts/pmc_paper.pyscripts/pubmed_search.pyscripts/refTree.pyscripts/search.pyscripts/search_utils.pyscripts/semantic_scholar_crawler_refTree.pyscripts/semantic_scholar_crawler_search.pyscripts/semantic_scholar_refTree.pyscripts/semantic_scholar_refs.pyscripts/semantic_scholar_search.pyscripts/ssrn_search.pyscripts/wikipedia_search.py
Files
SKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesSKILL.mdcore14,704 bytesreferences/paper.mddoc6,137 bytesreferences/refTree.mddoc9,073 bytesreferences/search.mddoc5,553 bytesrequirements.txtdoc108 bytesscripts/arxiv_crawler_search.pyruns14,225 bytesscripts/arxiv_mirror_search.pyruns6,943 bytesscripts/arxiv_paper.pyruns13,564 bytesscripts/arxiv_pdf_paper.pyruns5,230 bytesscripts/arxiv_search.pyruns9,586 bytesscripts/crossref_search.pyruns6,003 bytesscripts/deepxiv_paper.pyruns7,356 bytesscripts/deepxiv_search.pyruns9,481 bytesscripts/google_scholar_search.pyruns8,665 bytesscripts/openalex_search.pyruns5,540 bytesscripts/paper.pyruns15,346 bytesscripts/pmc_paper.pyruns16,340 bytesscripts/pubmed_search.pyruns5,885 bytesscripts/refTree.pyruns27,381 bytesscripts/search.pyruns17,109 bytesscripts/search_utils.pyruns4,407 bytesscripts/semantic_scholar_crawler_refTree.pyruns22,044 bytesscripts/semantic_scholar_crawler_search.pyruns6,680 bytesscripts/semantic_scholar_refTree.pyruns15,112 bytesscripts/semantic_scholar_refs.pyruns8,161 bytesscripts/semantic_scholar_search.pyruns6,945 bytesscripts/ssrn_search.pyruns4,107 bytesscripts/wikipedia_search.pyruns2,563 bytes
Read SKILL.md
# sn-search-academic - 学术搜索
## 凭证配置
API key、token 与 cookie 统一建议写在仓库根目录 `.env`(参考 `.env.example`),并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证;不要把真实密钥写入 skill payload、报告、日志或提交。
使用三个统一入口完成学术调研:
- `search.py`:搜索论文和百科条目
- `paper.py`:列出论文章节,读取论文全文或指定章节
- `refTree.py`:查询论文的 references 和 citations
不要直接调用历史 provider 脚本;它们只是统一入口的内部实现细节。
需要 provider 回退链、参数分发或完整输出字段时,按需读取 `references/search.md`、`references/paper.md`、`references/refTree.md`。View the complete source on GitHubsn-search-code
When your agent uses it
用于查找代码示例、开源项目、GitHub Issue、技术问答、开发者讨论、HuggingFace 模型/数据集/Space。
What it loads into context
Frontmatter
44 tokensAlways available to the agent
SKILL.md
1,367 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 凭证配置
- 可用脚本
- 依赖
- 参数说明
- 输出格式
Scripts executed separately
scripts/github_search.pyscripts/hackernews_search.pyscripts/huggingface_search.pyscripts/search_utils.pyscripts/stackoverflow_search.py
Files
SKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesSKILL.mdcore4,828 bytesrequirements.txtdoc12 bytesscripts/github_search.pyruns3,206 bytesscripts/hackernews_search.pyruns2,908 bytesscripts/huggingface_search.pyruns4,365 bytesscripts/search_utils.pyruns4,407 bytesscripts/stackoverflow_search.pyruns2,756 bytes
Read SKILL.md
# sn-search-code - 开发者搜索
## 凭证配置
API key、token 与 cookie 统一建议写在仓库根目录 `.env`(参考 `.env.example`),并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证;不要把真实密钥写入 skill payload、报告、日志或提交。
搜索 GitHub、Stack Overflow、Hacker News、HuggingFace 四个开发者核心平台。所有脚本无需 API 密钥 即可使用,但 GitHub `--type code` 搜索是例外(见下方说明)。
## 可用脚本
| 脚本 | 平台 | 用途 | API 密钥 |
|------|------|------|---------|
| `github_search.py` | GitHub | 仓库、代码、Issue 搜索 | `code` 类型**必须**;其他类型可选(提高限额) |
| `stackoverflow_search.py` | Stack Overflow | 技术问答搜索 | 无需 |View the complete source on GitHubsn-search-finance
When your agent uses it
用于搜索金融市场、证券、上市公司基本面、价格、K 线、披露文件、财经新闻、A 股数据、港股或全球 ticker,可使用 yfinance、mootdx、API 脚本或 browser-use。
What it loads into context
Frontmatter
62 tokensAlways available to the agent
SKILL.md
1,421 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 凭证配置
- 工作流
- API 脚本
- mootdx
- browser-use 场景
Scripts executed separately
scripts/finance_search.py
Files
SKILL.mdcore5,095 bytesSKILL.mdcore5,095 bytesSKILL.mdcore5,095 bytesSKILL.mdcore5,095 bytesrequirements.txtdoc21 bytesscripts/finance_search.pyruns24,439 bytes
Read SKILL.md
# 金融财经搜索
## 凭证配置
API key、token 与 cookie 统一建议写在仓库根目录 `.env`(参考 `.env.example`),并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证;不要把真实密钥写入 skill payload、报告、日志或提交。
用于证券、指数、基金、财务报表、行情、K 线、公告线索、财经新闻和公司基本面的检索。API 脚本和 browser-use 可以混合使用;按任务需要选择,不设固定优先级。
## 工作流
1. 先确认市场和标的:A 股/港股/美股/全球 ticker、公司名、证券代码、时间区间、需要的数据口径。
2. 结构化数据用 `scripts/finance_search.py`:yfinance 查全球 ticker、行情、财务、新闻、SEC filings;mootdx 查通达信/A 股行情、K 线、财务包。
3. 需要页面证据、新闻正文、交互筛选、图表核对、脚本失败或字段缺失时,用 browser-use 打开 Yahoo Finance、交易所、上市公司 IR、公告页或搜索结果页交叉核对。
4. 输出结论时保留 ticker/证券代码、市场、数据区间、指标口径和来源 URL;不要把脚本结果当作投资建议。View the complete source on GitHubsn-search-image
When your agent uses it
USE FOR Google-backed image discovery via Serper.dev. Returns image URLs, page URLs, titles, and source domains.
What it loads into context
Frontmatter
63 tokensAlways available to the agent
SKILL.md
344 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Commands
- Important
Scripts executed separately
scripts/serper_image_search.py
Files
SKILL.mdcore1,273 bytesSKILL.mdcore1,273 bytesSKILL.mdcore1,273 bytesSKILL.mdcore1,273 bytesSKILL.mdcore1,273 bytesSKILL.mdcore1,273 bytesSKILL.mdcore1,273 bytesrequirements.txtdoc9 bytesscripts/serper_image_search.pyruns6,011 bytes
Read SKILL.md
# Serper Image Search
Use this skill to search for candidate images via Serper.dev.
## Commands
Standard image search:
```bash
python3 {baseDir}/scripts/serper_image_search.py "QUERY" --num 10
```
Image URLs only:
View the complete source on GitHubsn-search-market-cn
When your agent uses it
Use when researching China market, industry, macro, trade, procurement, listed-company disclosure, regulation, IP, healthcare, logistics, energy, environment, or industrial-operation information using free official sources with no registration, no API key, and no cryptocurrency data.
What it loads into context
Frontmatter
60 tokensAlways available to the agent
SKILL.md
1,814 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 凭证配置
- 工作流
- API 脚本
- Browser-use 资源
- 使用边界
Scripts executed separately
scripts/free_market_api.py
Files
SKILL.mdcore6,740 bytesSKILL.mdcore6,740 bytesscripts/free_market_api.pyruns5,606 bytes
Read SKILL.md
# 中国市场商业搜索
## 凭证配置
API key、token 与 cookie 统一建议写在仓库根目录 `.env`(参考 `.env.example`),并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证;不要把真实密钥写入 skill payload、报告、日志或提交。
只使用本技能列出的中国官方免费资源。不要补充表外资源;遇到注册、登录、验证码、授权码、API key、OAuth、数字签名对接、商业试用、付费墙、访问防护或加密货币数据,立即放弃该资源。
## 工作流
1. 明确研究对象:行业、公司、地区、时间段、指标口径和需要的证据类型。
2. A 股公告、年报、季报、问询函先用 API 脚本;脚本拿不到再用 browser-use 打开巨潮页面。
3. 其它资源统一用 browser-use 正常访问网页,通过站内搜索、栏目导航、筛选器和公开下载文件取数。
4. 宏观、监管、招投标、采购、行业运行数据优先引用官方页面或官方文件链接;结论中保留来源 URL、指标口径和时间范围。View the complete source on GitHubsn-search-social-cn
When your agent uses it
用于搜索中文社交平台。脚本入口覆盖 B站视频、知乎问答和抖音视频;小红书、微博当前没有脚本入口,只能通过 browser-use / 公开网页兜底。
What it loads into context
Frontmatter
57 tokensAlways available to the agent
SKILL.md
1,188 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 凭证配置
- 稳定性说明
- 依赖
- Cookie 获取方式
- 参数说明
- 输出格式
Scripts executed separately
scripts/bilibili_search.pyscripts/douyin_search.pyscripts/search_utils.pyscripts/zhihu_search.py
Files
SKILL.mdcore4,113 bytesSKILL.mdcore4,113 bytesSKILL.mdcore4,113 bytesSKILL.mdcore4,113 bytesSKILL.mdcore4,113 bytesSKILL.mdcore4,113 bytesSKILL.mdcore4,113 bytesSKILL.mdcore4,113 bytesrequirements.txtdoc16 bytesscripts/bilibili_search.pyruns3,554 bytesscripts/douyin_search.pyruns2,950 bytesscripts/search_utils.pyruns4,407 bytesscripts/zhihu_search.pyruns6,863 bytes
Read SKILL.md
# sn-search-social-cn - 中文社交平台搜索
## 凭证配置
API key、token 与 cookie 统一建议写在仓库根目录 `.env`(参考 `.env.example`),并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证;不要把真实密钥写入 skill payload、报告、日志或提交。
脚本搜索 B站、知乎、抖音三个中文社交平台。小红书、微博当前没有可用脚本入口,如研究必须覆盖这两类来源,使用 browser-use 打开公开网页结果或平台搜索页,并在结果中说明该来源来自网页兜底。
## 稳定性说明
中文社交平台没有稳定的公开搜索 API,所有脚本依赖内部 API 或第三方库,**可能因平台更新而失效**。
| 脚本 | 平台 | 稳定性 | 认证方式 |
|------|------|--------|---------|View the complete source on GitHubsn-search-social-en
When your agent uses it
用于搜索英文社交平台,包括 Reddit 帖子、Twitter/X 推文和 YouTube 视频。
What it loads into context
Frontmatter
31 tokensAlways available to the agent
SKILL.md
893 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 凭证配置
- 可用脚本
- 依赖
- 参数说明
- 输出格式
Scripts executed separately
scripts/reddit_search.pyscripts/search_utils.pyscripts/twitter_search.pyscripts/youtube_search.py
Files
SKILL.mdcore3,119 bytesSKILL.mdcore3,119 bytesSKILL.mdcore3,119 bytesSKILL.mdcore3,119 bytesSKILL.mdcore3,119 bytesSKILL.mdcore3,119 bytesSKILL.mdcore3,119 bytesSKILL.mdcore3,119 bytesSKILL.mdcore3,119 bytesrequirements.txtdoc12 bytesscripts/reddit_search.pyruns2,831 bytesscripts/search_utils.pyruns4,407 bytesscripts/twitter_search.pyruns2,525 bytesscripts/youtube_search.pyruns2,213 bytes
Read SKILL.md
# sn-search-social-en - 英文社交平台搜索
## 凭证配置
API key、token 与 cookie 统一建议写在仓库根目录 `.env`(参考 `.env.example`),并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证;不要把真实密钥写入 skill payload、报告、日志或提交。
搜索 Reddit、Twitter/X、YouTube 三个英文社交平台。
## 可用脚本
| 脚本 | 平台 | 用途 | API 密钥 |
|------|------|------|---------|
| `reddit_search.py` | Reddit | 帖子和讨论搜索 | 无需 |
| `twitter_search.py` | Twitter/X | 推文搜索 | 需 `TIKHUB_TOKEN` |View the complete source on GitHubsn-search-social-media
When your agent uses it
搜索社区、社媒、新闻热点、百科趋势、开发者生态和技术讨论时使用。
What it loads into context
Frontmatter
31 tokensAlways available to the agent
SKILL.md
1,427 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 凭证配置
- 硬性规则
- 依赖
- 资源选择
- 常用命令
- 使用策略
- 输出约定
Scripts executed separately
scripts/_filters.pyscripts/github_public_search.pyscripts/hackernews_hotspots.pyscripts/search_utils.pyscripts/stackexchange_search.pyscripts/wikimedia_pageviews.py
Files
SKILL.mdcore5,565 bytesSKILL.mdcore5,565 bytesSKILL.mdcore5,565 bytesSKILL.mdcore5,565 bytesrequirements.txtdoc12 bytesscripts/_filters.pyruns1,600 bytesscripts/github_public_search.pyruns3,891 bytesscripts/hackernews_hotspots.pyruns3,885 bytesscripts/search_utils.pyruns4,444 bytesscripts/stackexchange_search.pyruns3,233 bytesscripts/wikimedia_pageviews.pyruns6,073 bytes
Read SKILL.md
# sn-search-social-media - 社区/社媒/新闻热点搜索
## 凭证配置
API key、token 与 cookie 统一建议写在仓库根目录 `.env`(参考 `.env.example`),并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证;不要把真实密钥写入 skill payload、报告、日志或提交。
本技能给 agent 用于抓取公开热点信号。只使用免费、免注册、免 API key、非加密货币的数据源;不要要求用户提供 token、cookie、API key,也不要使用商业收费接口。
## 硬性规则
- 禁止处理加密货币、虚拟货币、区块链、Web3、NFT、DeFi、交易所,以及加密货币语境下的挖矿/钱包等查询。
- 如果用户请求加密货币相关热点,直接说明本技能不覆盖该主题,不要运行脚本。
- 不使用 GitHub code search、GitHub GraphQL、Stack Exchange key、BigQuery、YouTube API、Twitter/X API、TikHub、Reddit OAuth 或任何需要注册 key/token/cookie 的方式。
- 不使用无法访问、要求登录、要求付费或只有商业计划的资源;遇到新增资源,先确认能访问且符合以上限制。View the complete source on GitHubsn-search-year-report
When your agent uses it
用于搜索免费官方年报、年度报告、定期报告、上市公司披露文件、债券发行人报告和海外公司年度账目。
What it loads into context
Frontmatter
42 tokensAlways available to the agent
SKILL.md
1,383 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 凭证配置
- 工作流
- API 脚本
- Browser-use 资源
- 已丢弃
- 输出规范
Scripts executed separately
scripts/year_report_api.py
Files
SKILL.mdcore5,311 bytesSKILL.mdcore5,311 bytesscripts/year_report_api.pyruns10,505 bytes
Read SKILL.md
# Search Year Report
## 凭证配置
API key、token 与 cookie 统一建议写在仓库根目录 `.env`(参考 `.env.example`),并由 runtime 或用户在执行前加载为同名环境变量。脚本仍只从环境变量或显式 CLI 参数读取凭证;不要把真实密钥写入 skill payload、报告、日志或提交。
只使用免费、官方、可正常访问的年报/年度账目/定期报告来源。遇到商业库、订阅、试用额度、付费下载、登录墙、验证码、防护页、不可访问页面,立即丢弃,不要绕过限制。
输出时保留公司/证券代码、报告期、文件标题、披露日期、PDF 或详情页 URL、来源名称。
## 工作流
1. 先判断主体类型:A 股/港股/美股/英企/日本上市公司/发债主体/加拿大/新加坡/澳洲。
2. `scripts/year_report_api.py` 和 browser-use 可混合使用:脚本适合结构化查询,网页适合站内筛选、页面确认、下载公开 PDF。View the complete source on GitHubsn-team-harness
When your agent uses it
Use when a user asks what SenseNova Team Harness is, wants an introduction or overview, is getting started, or is deciding whether it fits — a self-hosted workspace where people and local AI agents collaborate on conversations, projects, work items, and artifacts. Covers its core concepts (Workspace, Project, Conversation, Agent, WorkItem, Resource, Artifact, Local Computer), main capabilities, how to run it, and the basic usage flow.
What it loads into context
Frontmatter
108 tokensAlways available to the agent
SKILL.md
1,170 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 核心概念
- 主要能力
- 适用场景
- 快速开始(自托管)
- 基本使用流程
- 边界与注意事项
- 延伸阅读
Files
SKILL.mdcore4,572 bytesSKILL.mdcore4,572 bytes
Read SKILL.md
# SenseNova Team Harness
SenseNova Team Harness 是一个**自托管的团队协作工作区**,让人和本地 AI Agent 围绕
同一份工作协同:讨论、待办、AI 执行和最终成果都放在同一个空间里。它把
「提出问题 → 分配工作 → 持续推进 → 交付成果」连成一条完整、可审计的协作链,
让 AI 真正作为团队成员参与,而不是把回答留在个人聊天窗口里。
## 核心概念
| 概念 | 说明 |
| --- | --- |
| **Workspace** | 团队共享空间,是共享协作事实的唯一权威来源。 |
| **Project** | 一个目标下的任务、讨论和交付物的集合。 |
| **Conversation** | 团队讨论;可以在其中 @Agent 或创建待办。 |View the complete source on GitHubsn-update
When your agent uses it
Update SenseNova Skills (the sn-* bundle) inside an OpenClaw or hermes-agent install. ALWAYS use this skill when the user says any of: "update SenseNova skills", "update SN skills", "更新 sensenova skills", "更新 sn skills", "刷新 sn-*", "升级 sn-* skills", or names a specific sn-* skill to update (e.g. "更新 sn-ppt-standard", "refresh sn-image-base"). Default scope is the whole sn-* bundle; if the user names specific skills, update ONLY those.
What it loads into context
Frontmatter
241 tokensAlways available to the agent
SKILL.md
1,475 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Decide the scope
- Decide the target agent
- Sync the upstream repo
- Compare versions per skill (A → B → C)
- Install with backup
- Enforce backup retention
- Report to the user
- Edge cases
Files
SKILL.mdcore5,670 bytes
Read SKILL.md
# sn-update
Refresh installed `sn-*` skills from upstream
[SenseNova-Skills](https://github.com/OpenSenseNova/SenseNova-Skills).
---
## Decide the scope
- No list given → every `sn-*` skill upstream.
- Specific skills named → only those. Don't expand.
- A named skill missing upstream → surface as error and stop.
- User said "force / 强制" → re-install even when up-to-date.
View the complete source on GitHubSkills included
- sn-code-video
- sn-da-excel-workflow
- large-file-parquet-analysis-and-highlight
- excel-conditional-comparison-and-large-file-processing
- excel-outlier-detection-and-highlighting
- large-file-conditional-formatting
- top-value-coloring
- numeric-extraction-and-distribution-analysis
- categorical-comparison-analysis
- group-by-analysis
- large-file-kpi-analysis
- pivot-table-cross-analysis
- time-series-and-categorical-analysis
- trend-analysis
- excel-multi-sheet-threshold-analysis
- invalid-data-cleaning
- excel-smart-analysis-and-cleaning
- numeric-format-normalization
- outlier-detection-and-quality-assessment
- text-normalization-and-large-file-processing
- category-filtering-and-difficulty-analysis
- condition-filtering-and-large-file-optimization
- excel-conditional-filtering-optimization
- excel-threshold-analysis-and-styling
- excel-basic-statistics-and-routing
- category-statistics
- grouped-statistics
- dynamic-percentage-and-large-file-analysis
- excel-bar-chart-visualization
- statistical-distribution-and-outlier-analysis
- line-chart-visualization
- pie-chart-data-analysis
- excel-statistical-viz-large-file
- stacked-chart-visualization
- large-excel-analysis-and-formatting
- multi-file-excel-parquet-analysis
- multi-sheet-reading-and-analysis
- range-reading-and-large-file-analysis
- single-sheet-reading-and-analysis
- excel-multi-sheet-dynamic-analysis
- excel-large-file-processing-and-cleaning
- chart-embedded-export
- formatted-export-with-parquet
- excel-data-analysis-and-report-generation
- excel-sheet-filter-export
- dynamic-large-file-parquet-analysis
- sn-da-image-caption
- sn-da-large-file-analysis
- sn-da-non-spreadsheet-analysis
- pdf-analysis
- ppt-analysis
- word-analysis
- sn-deep-research
- sn-deepresearch-cli
- sn-image-base
- sn-image-doctor
- sn-image-imitate
- sn-image-resume
- sn-infographic
- sn-md-to-html-report
- sn-motion-html
- sn-ppt-creative
- sn-ppt-dazzle
- sn-ppt-doctor
- sn-ppt-entry
- sn-ppt-standard
- sn-ppt-story
- sn-ppt-tools
- sn-ppt-workbench
- sn-prepare-citations
- sn-proactive-agent
- sn-report-format-discovery
- sn-research-report
- sn-search-academic
- sn-search-code
- sn-search-finance
- sn-search-image
- sn-search-market-cn
- sn-search-social-cn
- sn-search-social-en
- sn-search-social-media
- sn-search-year-report
- sn-team-harness
- sn-update
Repository facts
- License
- MIT
- Created
- Apr 14, 2026
- Last pushed
- Nov 3, 2026
- Forks
- 436
- Open issues
- 11
- Project activity
- Active
Rank over the last 12 weeks
Now #249 · best #211 · down 22 in 30 days
- #236 from Oct 28 to Oct 29
- #240 from Oct 30 to Nov 2
- #243 from Nov 3 to Nov 4
- #246 on Nov 5
- #247 on Nov 6
- #249 since Nov 7
60 earlier periods
- #200 on Aug 2
- #203 on Aug 8
- #205 on Aug 9
- #210 from Aug 10 to Aug 11
- #209 on Aug 12
- #212 on Aug 13
- #214 on Aug 14
- #213 on Aug 15
- #212 on Aug 16
- #214 on Aug 17
- #218 on Aug 18
- #217 on Aug 19
- #215 on Aug 20
- #216 on Aug 21
- #212 on Aug 22
- #217 from Aug 23 to Aug 27
- #214 from Aug 28 to Aug 29
- #212 from Aug 30 to Aug 31
- #218 on Sep 1
- #211 on Sep 2
- #217 on Sep 3
- #212 on Sep 4
- #215 on Sep 5
- #213 on Sep 6
- #216 from Sep 7 to Sep 8
- #214 on Sep 9
- #213 on Sep 10
- #211 from Sep 11 to Sep 12
- #214 from Sep 13 to Sep 14
- #215 from Sep 15 to Sep 16
- #218 on Sep 18
- #217 on Sep 19
- #219 on Sep 20
- #220 on Sep 21
- #221 from Sep 22 to Sep 23
- #220 on Sep 24
- #219 on Sep 25
- #220 from Sep 26 to Sep 27
- #223 from Sep 28 to Sep 29
- #222 on Sep 30
- #225 on Oct 1
- #228 on Oct 2
- #224 on Oct 3
- #222 on Oct 4
- #223 on Oct 5
- #225 on Oct 6
- #228 on Oct 7
- #227 on Oct 8
- #231 on Oct 9
- #230 on Oct 10
- #231 on Oct 11
- #234 on Oct 12
- #235 on Oct 13
- #234 from Oct 14 to Oct 15
- #233 on Oct 16
- #235 from Oct 17 to Oct 18
- #236 from Oct 19 to Oct 20
- #237 on Oct 21
- #235 on Oct 22
- #234 from Oct 23 to Oct 25
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 2, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 442 notes
skills/sn-code-video/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-code-video/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-code-video/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-code-video/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-code-video/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-code-video/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-code-video/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/capability/excel-cell-coloring/category-coloring/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/capability/excel-cell-coloring/category-coloring/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/capability/excel-cell-coloring/category-coloring/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/capability/excel-cell-coloring/duplicate-value-coloring/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/capability/excel-cell-coloring/duplicate-value-coloring/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/sn-da-excel-workflow/capability/excel-cell-coloring/outlier-coloring/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 2 dangerous shell commandsin 1 file: sn-ppt-standard/scripts/install.sh:149
- 999 network referencesin 125 files: sn-image-base/README.md:3 sn-ppt-standard/scripts/export_pptx/package-lock.json:16 sn-image-base/SKILL.md:135 and 122 more
- 181 obfuscation signalsin 12 files: sn-deep-research/workbench-runtime/dist-server/index.mjs:2564 sn-ppt-workbench/workbench-runtime/dist-server/index.mjs:2564 sn-ppt-workbench/workbench-runtime/dist/assets/index-DZ8oHsQz.js:1 and 9 more
- No instruction overrides
- 145 executable scriptsin 144 files: sn-image-base/scripts/sn_agent_runner.py:1 sn-code-video/scripts/audio_check.sh:1 sn-code-video/scripts/capture.mjs:1 and 141 more
- 581 references to secretsin 77 files: sn-image-base/scripts/sn_agent_runner.py:118 sn-ppt-workbench/scripts/open_workbench.py:123 sn-image-base/README.md:45 and 74 more
- No requests to vote in Hot
Show all 1,908 signals by file
docs/sn-code-video.md
- Network accessline 115
Adapted from OpenSenseNova's [`code-video` skill](https://github.com/OpenSenseNova/SenseNova-6.8-Code2Video/tree/776ae79824e338ba5d63fef66167455edc94ad26/skills/code-video). - Network accessline 116
[`code-video` skill](https://github.com/OpenSenseNova/SenseNova-6.8-Code2Video/tree/776ae79824e338ba5d63fef66167455edc94ad26/skills/code-video).
docs/sn-code-video_cn.md
- Network accessline 108
整合自 OpenSenseNova 的 [`code-video` Skill](https://github.com/OpenSenseNova/SenseNova-6.8-Code2Video/tree/776ae79824e338ba5d63fef66167455edc94ad26/skills/code-video)。 - Network accessline 109
[`code-video` Skill](https://github.com/OpenSenseNova/SenseNova-6.8-Code2Video/tree/776ae79824e338ba5d63fef66167455edc94ad26/skills/code-video)。
docs/sn-image-generate_en.md
- Access to secretsline 10
[Credential-related source omitted] - Network accessline 75
Use these skills from [OpenClaw](https://openclaw.ai/). - Network accessline 76
They follow the [Agent Skills](https://agentskills.io/) layout; see [OpenClaw Skills](https://docs.openclaw.ai/tools/skills) for how OpenClaw discovers and loads skill folders. - Network accessline 77
If you have not set up OpenClaw yet, install and configure it from the **[official documentation](https://docs.openclaw.ai/)** (product site: [openclaw.ai](https://openclaw.ai/)). - Network accessline 81
Clone this repository, then expose the `skills/` directory to OpenClaw ([locations and precedence](https://docs.openclaw.ai/tools/skills#locations-and-precedence)) (or Hermes). - Network accessline 101
Replace the path with your clone. Details: [Skills config](https://docs.openclaw.ai/tools/skills-config). Workspace skills win over `extraDirs` if the same name appears twice. - Network accessline 115
- International: [platform.sensenova.ai/docs](https://platform.sensenova.ai/docs) - Network accessline 116
- Mainland China: [platform.sensenova.cn/token-plan](https://platform.sensenova.cn/token-plan) - Network accessline 125
SN_BASE_URL="https://token.sensenova.ai/v1" - Access to secretsline 126
[Credential-related source omitted] - Network accessline 133
SN_BASE_URL="https://token.sensenova.cn/v1" - Access to secretsline 134
[Credential-related source omitted]
skills/sn-code-video/references/simulations-and-generative.md
- Network accessline 52
- Each particle has a stable id and seeded properties (birth time, lifetime, colour, size). Its position is a function of `t − birth` (closed form or baked). Do not spawn particles from frame-dependent randomness. - Motion fields: curl nois - Network accessline 53
- Motion fields: curl noise (divergence-free) for ink, smoke and fluid-like drift; gravity + drag for sparks; attraction to target points for particles forming a shape (assign each particle a target point by a fixed mapping so gathering is
skills/sn-code-video/scripts/audio_check.sh
- Executable scriptline 1
#!/bin/sh
skills/sn-code-video/scripts/capture.mjs
skills/sn-code-video/scripts/check_video.sh
- Executable scriptline 1
#!/bin/sh
skills/sn-code-video/scripts/contact_sheet.sh
- Executable scriptline 1
#!/bin/sh
skills/sn-code-video/scripts/sync_check.py
- Executable scriptline 1
Executable file
skills/sn-code-video/scripts/synth.py
- Executable scriptline 1
Executable file
skills/sn-code-video/scripts/tts.py
- Executable scriptline 1
Executable file
skills/sn-da-image-caption/SKILL.md
- Access to secretsline 18
[Credential-related source omitted]
skills/sn-da-image-caption/scripts/caption.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 48
_BUILTIN_BASE_URL = "https://token.sensenova.cn/v1" - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 65
[Credential-related source omitted] - Access to secretsline 227
[Credential-related source omitted] - Access to secretsline 235
[Credential-related source omitted] - Access to secretsline 272
[Credential-related source omitted] - Access to secretsline 299
[Credential-related source omitted] - Access to secretsline 325
[Credential-related source omitted] - Access to secretsline 344
[Credential-related source omitted] - Access to secretsline 361
[Credential-related source omitted] - Access to secretsline 382
[Credential-related source omitted] - Access to secretsline 396
[Credential-related source omitted] - Access to secretsline 411
[Credential-related source omitted]
skills/sn-deep-research/SKILL.md
skills/sn-deep-research/schemas/briefing.schema.md
skills/sn-deep-research/schemas/evidence.schema.md
- Network accessline 121
{ "id": "semi_industry_2024", "url": "https://www.semi.org.cn/...", - Network accessline 122
"id": "semi_industry_2024", "url": "https://www.semi.org.cn/...", "title": "中国半导体行业 2024 年度报告", - Network accessline 123
"url": "https://www.semi.org.cn/...", - Network accessline 221
{ "id": "semi_industry_2024", "url": "https://www.semi.org.cn/report/2024", - Network accessline 222
"id": "semi_industry_2024", "url": "https://www.semi.org.cn/report/2024", "title": "中国半导体行业 2024 年度报告", - Network accessline 223
"url": "https://www.semi.org.cn/report/2024", - Network accessline 228
{ "id": "ft_china_chip_2024", "url": "https://www.ft.com/content/china-chip-2024", - Network accessline 229
"id": "ft_china_chip_2024", "url": "https://www.ft.com/content/china-chip-2024", "title": "China's chip industry: domestic substitution drive", - Network accessline 230
"url": "https://www.ft.com/content/china-chip-2024",
skills/sn-deep-research/scripts/validate_briefing.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-deep-research/scripts/validate_evidence.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-deep-research/scripts/validate_outline.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-deep-research/scripts/validate_plan.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-deep-research/scripts/validate_supplement_plan.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-deep-research/workbench-runtime/bin/sensenova-ppt-workbench.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 143
function buildLocalUrl(port, host) { const probeHost = host === '0.0.0.0' || host === '::' ? '127.0.0.1' : host return `http://${probeHost}:${port}` - Network accessline 144
const probeHost = host === '0.0.0.0' || host === '::' ? '127.0.0.1' : host return `http://${probeHost}:${port}` } - Network accessline 145
return `http://${probeHost}:${port}` - Network accessline 155
if (host === '0.0.0.0' || host === '::') { return `http://${getLanAddress()}:${port}` - Network accessline 156
return `http://${getLanAddress()}:${port}` - Network accessline 405
const timeout = setTimeout(() => controller.abort(), 1500) try { const response = await fetch(`${url.replace(/\/+$/, '')}/api/workbench/session`, { - Network accessline 406
try { const response = await fetch(`${url.replace(/\/+$/, '')}/api/workbench/session`, { signal: controller.signal, - Network accessline 407
const response = await fetch(`${url.replace(/\/+$/, '')}/api/workbench/session`, { - Access to secretsline 484
[Credential-related source omitted] - Access to secretsline 490
[Credential-related source omitted] - Access to secretsline 495
[Credential-related source omitted] - Access to secretsline 496
[Credential-related source omitted] - Access to secretsline 497
[Credential-related source omitted] - Access to secretsline 498
[Credential-related source omitted] - Access to secretsline 524
[Credential-related source omitted] - Access to secretsline 531
[Credential-related source omitted]
skills/sn-deep-research/workbench-runtime/bin/sensenova-research-workbench.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/sn-deep-research/workbench-runtime/dist-server/index.mjs
- Executable scriptline 1
Executable file - Network accessline 429
} let m; return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 - Network accessline 430
let m; return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 typeof win - Network accessline 431
return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 - Network accessline 433
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - Possible obfuscationline 2564
chars: "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260 - Possible obfuscationline 2578
chars: "\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635 - Possible obfuscationline 2772
"chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\x - Possible obfuscationline 2778
"chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\x - Possible obfuscationline 2784
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\x - Possible obfuscationline 2790
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\x - Possible obfuscationline 2796
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\x - Possible obfuscationline 2802
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8 - Possible obfuscationline 2808
"chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8 - Possible obfuscationline 2814
"chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9 - Possible obfuscationline 2820
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\x - Possible obfuscationline 2826
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\x - Possible obfuscationline 2831
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB - Possible obfuscationline 2836
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3 - Possible obfuscationline 2841
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u - Possible obfuscationline 2846
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u04 - Possible obfuscationline 2851
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD - Possible obfuscationline 2856
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u - Possible obfuscationline 2861
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8 - Possible obfuscationline 2866
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\x - Possible obfuscationline 2871
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u - Possible obfuscationline 2876
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u - Possible obfuscationline 2881
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\x - Possible obfuscationline 2886
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120 - Possible obfuscationline 2891
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\x - Possible obfuscationline 2896
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u - Possible obfuscationline 2901
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u - Possible obfuscationline 2913
"chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB - Possible obfuscationline 2919
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\x - Possible obfuscationline 2925
"chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C - Possible obfuscationline 2937
"chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD - Possible obfuscationline 2943
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u - Possible obfuscationline 2949
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\x - Possible obfuscationline 2955
"chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561 - Possible obfuscationline 2961
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u - Possible obfuscationline 2967
"chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\x - Possible obfuscationline 2973
"chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u - Possible obfuscationline 2982
!\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xB - Possible obfuscationline 2988
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u - Possible obfuscationline 3006
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8 - Possible obfuscationline 3018
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u04 - Possible obfuscationline 3030
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u - Possible obfuscationline 3036
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u - Possible obfuscationline 3042
"chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u - Possible obfuscationline 3048
"chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u - Possible obfuscationline 3054
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7 - Possible obfuscationline 3060
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u22 - Possible obfuscationline 3064
"chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406 - Possible obfuscationline 3068
"chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391 - Possible obfuscationline 3072
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u - Possible obfuscationline 3076
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5 - Possible obfuscationline 3080
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5 - Possible obfuscationline 3088
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5 - Possible obfuscationline 3096
"chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556 - Possible obfuscationline 3100
"chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457 - Possible obfuscationline 3104
"chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457 - Possible obfuscationline 3108
"chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6 - Possible obfuscationline 3112
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\ - Possible obfuscationline 3116
"chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\x - Possible obfuscationline 3127
"chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\x - Possible obfuscationline 3131
"chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\x - Possible obfuscationline 3141
\u1EF4<U+001F> !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA - Possible obfuscationline 3159
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\x - Possible obfuscationline 3163
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5 - Possible obfuscationline 3870
["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], - Possible obfuscationline 3885
["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], - Possible obfuscationline 3886
["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9 - Possible obfuscationline 3887
["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], - Possible obfuscationline 3888
["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], - Possible obfuscationline 3889
["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u - Network accessline 4917
// After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. // // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - Network accessline 4919
// Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - Network accessline 4947
// TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. // == Chinese/GBK ========================================================== // http://en.wikipedia.org/wiki/GBK - Network accessline 4948
// == Chinese/GBK ========================================================== // http://en.wikipedia.org/wiki/GBK // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - Network accessline 4949
// http://en.wikipedia.org/wiki/GBK - Network accessline 4950
// We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - Network accessline 4977
// GB18030 is an algorithmic extension of GBK. // Main source: https://www.w3.org/TR/encoding/#gbk-encoder - Network accessline 4978
// Main source: https://www.w3.org/TR/encoding/#gbk-encoder - Network accessline 4979
// http://icu-project.org/docs/papers/gb18030.html - Network accessline 4980
// http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - Network accessline 4981
// http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - Network accessline 5013
// == Big5/Taiwan/Hong Kong ================================================ // There are lots of tables for Big5 and cp950. Please see the following links for history: // http://moztw.org/docs/big5/ http://www.haible.de/bruno/ - Network accessline 5014
// There are lots of tables for Big5 and cp950. Please see the following links for history: // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html // Variations, in roughly number of defi - Network accessline 5015
// http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - Network accessline 5016
// Variations, in roughly number of defined chars: // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT // * Windows CP 951: Microsoft variant of Bi - Network accessline 5017
// * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - Network accessline 5018
// * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - Network accessline 5022
// many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. // Plus, it has 4 combining sequences. // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/sho - Network accessline 5023
// Plus, it has 4 combining sequences. // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 // because big5-hksc - Network accessline 5024
// Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - Network accessline 5026
// Implementations are not consistent within browsers; sometimes labeled as just big5. // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. // Great discussion & recap of what's going on https: - Network accessline 5027
// MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 // In the encoder, it might make sens - Network accessline 5028
// Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - Network accessline 5029
// In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt // htt - Network accessline 5030
// Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - Network accessline 5031
// http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - Network accessline 5032
// // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) - Network accessline 5033
// Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - Network accessline 5034
// Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - Network accessline 5052
// Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. - Network accessline 5053
// https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. - Network accessline 5116
// Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 - Network accessline 5272
if (typeof buf === "string") { if (!module.exports.skipDecodeWarning) { console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decodin - Network accessline 5273
if (!module.exports.skipDecodeWarning) { console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); module.exports.skipDecod - Network accessline 5274
console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); - Network accessline 5379
} if (false) { console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); - Network accessline 5380
if (false) { console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); } - Network accessline 5381
console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
skills/sn-deep-research/workbench-runtime/dist/assets/MarkdownArtifactViewer-C7xIspsK.js
- Possible obfuscationline 1
import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,m as s,n as c,o as l,p as u,r as d,s as f,t as p,u as m}from"./index-BrQYg30H.js";var h=i(u(),1),g={};function _(e){let t=g[e];if(t)return t;t=g[e]=[];for(let e=0;e<128;e++){let n=Stri - Executable scriptline 1
Executable file - Possible obfuscationline 2
`,` `],T=[`/`,`?`,`#`],E=255,D=/^[+a-z0-9A-Z_-]{0,63}$/,re=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,O={javascript:!0,"javascript:":!0},ie={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function k( - Possible obfuscationline 11
`:`>`,i},z.prototype.renderInline=function(e,t,n){let r=``,i=this.rules;for(let a=0,o=e.length;a<o;a++){let o=e[a].type;i[o]===void 0?r+=this.renderToken(e,a,t):r+=i[o](e,a,t,n,this)}return r},z.prototype.renderInlineAsText=function(e,t,n){ - Possible obfuscationline 12
[Credential-related source omitted] - Network accessline 13
[Credential-related source omitted] - Possible obfuscationline 13
[Credential-related source omitted] - Possible obfuscationline 14
[Credential-related source omitted]
skills/sn-deep-research/workbench-runtime/dist/assets/index-BrQYg30H.js
- Network accessline 1
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)= - Possible obfuscationline 1
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)= - Executable scriptline 1
Executable file - Possible obfuscationline 2
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return `+me+e+R}var ge=!1;function _e(e,t){if(!e||ge)return``;ge=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function - Possible obfuscationline 8
[Credential-related source omitted] - Network accessline 9
`).replace(kd,``)}function jd(e,t){return t=Ad(t),Ad(e)===t}function Md(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Vt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Vt(e,``+r);br - Possible obfuscationline 9
`).replace(kd,``)}function jd(e,t){return t=Ad(t),Ad(e)===t}function Md(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Vt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Vt(e,``+r);br - Possible obfuscationline 11
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=nt(),d;if(t){let e=typeof t==`string`?M(t):t;O(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \ - Network accessline 12
`, `).split( `))!n||n.startsWith(`:`)||n.startsWith(`event:`)||n.startsWith(`data:`)&&t.push(n.slice(5).trimStart());return t.length?JSON.parse(t.join( `)):null}async function Si(e,t,n){let r=await fetch(`/api/chat/send/stream`,{method:`POS - Network accessline 13
`).split(` `))!n||n.startsWith(`:`)||n.startsWith(`event:`)||n.startsWith(`data:`)&&t.push(n.slice(5).trimStart());return t.length?JSON.parse(t.join(` `)):null}async function Si(e,t,n){let r=await fetch(`/api/chat/send/stream`,{method:`POST - Network accessline 15
`)):null}async function Si(e,t,n){let r=await fetch(`/api/chat/send/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:e,context:t})});if(!r.ok){let e=await r.json().catch(()=>null);throw Error(e - Network accessline 21
`),c()}o+=a.decode().replaceAll(`\r `,` `),c();let l=xi(o);if(l&&(n(l),l.type===`error`&&(s=l.error)),s)throw Error(s)}async function Ci(e,t){let n=await fetch(`/api/workbench/audit/stream`,{method:`POST`,headers:{"Content-Type":`applicatio - Network accessline 22
`, `),c();let l=xi(o);if(l&&(n(l),l.type===`error`&&(s=l.error)),s)throw Error(s)}async function Ci(e,t){let n=await fetch(`/api/workbench/audit/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:e - Network accessline 23
`),c();let l=xi(o);if(l&&(n(l),l.type===`error`&&(s=l.error)),s)throw Error(s)}async function Ci(e,t){let n=await fetch(`/api/workbench/audit/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:e})} - Network accessline 29
`),s()}a+=i.decode().replaceAll(`\r `,` `),s();let c=xi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function wi(){return oi(`/api/ai/health`)}function Ti(){return oi(`/api/agents/health`)}function Ei(e){return oi(`/api/sl - Network accessline 30
`, `),s();let c=xi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function wi(){return oi(`/api/ai/health`)}function Ti(){return oi(`/api/agents/health`)}function Ei(e){return oi(`/api/slides/inspect`,{method:`POST`,body:JSO - Possible obfuscationline 30
`, `),s();let c=xi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function wi(){return oi(`/api/ai/health`)}function Ti(){return oi(`/api/agents/health`)}function Ei(e){return oi(`/api/slides/inspect`,{method:`POST`,body:JSO - Network accessline 31
`),s();let c=xi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function wi(){return oi(`/api/ai/health`)}function Ti(){return oi(`/api/agents/health`)}function Ei(e){return oi(`/api/slides/inspect`,{method:`POST`,body:JSON.s - Possible obfuscationline 31
`),s();let c=xi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function wi(){return oi(`/api/ai/health`)}function Ti(){return oi(`/api/agents/health`)}function Ei(e){return oi(`/api/slides/inspect`,{method:`POST`,body:JSON.s - Possible obfuscationline 32
`,r),o=t===-1?e.length:t;n.push(`<span class="code-token-comment">${wo(e.slice(r,o))}</span>`),r=o,i=r;continue}if((t===`script`||t===`css`)&&o===`/`&&s===`*`){a(r);let t=e.indexOf(`*/`,r+2),o=t===-1?e.length:t+2;n.push(`<span class="code-t - Possible obfuscationline 34
`)}function ko(e,t){let n=Co(t);return n===`markup`?Do(e):n===`table`?Oo(e,t):n===`script`||n===`css`||n===`yaml`||n===`toml`||n===`ini`?Eo(e,n):wo(e)}function Ao(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1):e}function jo(e,t){if( - Possible obfuscationline 35
`)}let Wt=Ut();async function Gt(){if(Wt)try{await xd(Wt),ce(n(`prompt.manualAgentPromptCopied`,{provider:V}))}catch{ce(n(`prompt.manualAgentPromptCopyFailed`))}}function Kt(e){let t=e.pageNos?.length?`\n\n涉及页面:${e.pageNos.map(e=>`第 ${e} 页`
skills/sn-deep-research/workbench-runtime/dist/assets/index-Bv_HE0iq.css
- Network accessline 1
@import "https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,320;14..32,330;14..32,340;14..32,480;14..32,540;14..32,700&family=JetBrains+Mono:wght@400&display=swap";:root{--ink:#000;--canvas:#fff;--inverse-canvas:#000;--inverse-
skills/sn-deep-research/workbench-runtime/dist/favicon.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="46" fill="none" viewBox="0 0 48 46"><path fill="#863bff" d="M25.946 44.938c-.664.845-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.287c-.92 0-1.456-1.04-.92-1.788l7.48-
skills/sn-deep-research/workbench-runtime/package.json
- Executable scriptline 1
Executable file
skills/sn-deepresearch-cli/SKILL.md
- Network accessline 9
作为 SenseNova-Skills-DeepResearch 的用户入口,负责环境预检、安装引导、参数确认、任务启动、进度告知和结果交付。 默认 npm 包为 `sensenova-skills-deepresearch`,项目源码仓库为 `https://github.com/OpenSenseNova/SenseNova-Skills-DeepResearch`。用户侧直接安装已构建并发布到 npm 的包, - Network accessline 10
默认 npm 包为 `sensenova-skills-deepresearch`,项目源码仓库为 `https://github.com/OpenSenseNova/SenseNova-Skills-DeepResearch`。用户侧直接安装已构建并发布到 npm 的包, 不需要 clone 仓库或本地构建。 - Network accessline 11
`https://github.com/OpenSenseNova/SenseNova-Skills-DeepResearch`。用户侧直接安装已构建并发布到 npm 的包, - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 67
[Credential-related source omitted] - Network accessline 183
研究已经启动,可打开 http://127.0.0.1:<selected-port> 查看实时进度。
skills/sn-image-base/.gitignore
- Network accessline 1
# File created using '.gitignore Generator' for Visual Studio Code: https://bit.ly/vscode-gig - Network accessline 2
# Created by https://www.toptal.com/developers/gitignore/api/visualstudiocode,linux,python - Network accessline 3
# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudiocode,linux,python - Network accessline 119
# This is especially recommended for binary packages to ensure reproducibility, and is more # commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control - Network accessline 120
# commonly ignored for libraries. # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control #poetry.lock - Network accessline 121
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control - Network accessline 127
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it # in version control. # https://pdm.fming.dev/#use-with-ide - Network accessline 128
# in version control. # https://pdm.fming.dev/#use-with-ide .pdm.toml - Network accessline 129
# https://pdm.fming.dev/#use-with-ide - Access to secretsline 143
[Credential-related source omitted] - Network accessline 175
# PyCharm # JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore - Network accessline 176
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore # and can be added to the global gitignore or merged into this - Network accessline 177
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore - Network accessline 182
### Python Patch ### # Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration - Network accessline 183
# Poetry local configuration file - https://python-poetry.org/docs/configuration/#local-configuration - Network accessline 211
# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,linux,python
skills/sn-image-base/README.md
- Network accessline 3
The skill for the [SenseNova-Skills](https://github.com/OpenSenseNova/SenseNova-Skills) project, providing low-level APIs for image generation, recognition (VLM), and text optimization (LLM). - Network accessline 3
The skill for the [SenseNova-Skills](https://github.com/OpenSenseNova/SenseNova-Skills) project, providing low-level APIs for image generation, recognition (VLM), and text optimization (LLM). - Network accessline 9
For installation and usage, please refer to the project's [README.md](https://github.com/OpenSenseNova/SenseNova-Skills/blob/main/README.md). - Network accessline 9
For installation and usage, please refer to the project's [README.md](https://github.com/OpenSenseNova/SenseNova-Skills/blob/main/README.md). - Network accessline 22
- For image generation: - [SenseNova](https://platform.sensenova.cn/) - Network accessline 22
- For image generation: - [SenseNova](https://platform.sensenova.cn/) - Network accessline 23
- [SenseNova](https://platform.sensenova.cn/) - Network accessline 23
- [SenseNova](https://platform.sensenova.cn/) - Network accessline 27
- For text and vision chat: - [SenseNova](https://platform.sensenova.cn/) - Network accessline 27
- For text and vision chat: - [SenseNova](https://platform.sensenova.cn/) - Network accessline 28
- [SenseNova](https://platform.sensenova.cn/) - Network accessline 28
- [SenseNova](https://platform.sensenova.cn/) - Network accessline 36
We recommend you to try out our [SenseNova Token Plan](https://platform.sensenova.cn/token-plan). - Network accessline 36
We recommend you to try out our [SenseNova Token Plan](https://platform.sensenova.cn/token-plan). - Network accessline 38
Go to <https://platform.sensenova.cn/token-plan/> to register a free account and get your API key for image generation and chat calls. - Network accessline 38
Go to <https://platform.sensenova.cn/token-plan/> to register a free account and get your API key for image generation and chat calls. - Network accessline 43
# If all capabilities use the same gateway, these two variables are enough. SN_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 43
# If all capabilities use the same gateway, these two variables are enough. SN_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 44
SN_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 44
SN_BASE_URL="https://token.sensenova.cn/v1" - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 88
[Credential-related source omitted] - Access to secretsline 88
[Credential-related source omitted] - Network accessline 89
| `SN_IMAGE_GEN_MODEL_TYPE` | The type of image generation model to use | `"sensenova"` | | `SN_IMAGE_GEN_MODEL` | The name of the image generation model to use | `"sensenova-u1.5-lite"` | | `SN_IMAGE_GEN_BASE_URL` | The base URL for the im - Network accessline 89
| `SN_IMAGE_GEN_MODEL_TYPE` | The type of image generation model to use | `"sensenova"` | | `SN_IMAGE_GEN_MODEL` | The name of the image generation model to use | `"sensenova-u1.5-lite"` | | `SN_IMAGE_GEN_BASE_URL` | The base URL for the im - Network accessline 91
| `SN_IMAGE_GEN_BASE_URL` | The base URL for the image generation API | `SN_BASE_URL`, then `"https://token.sensenova.cn/v1"` | - Network accessline 91
| `SN_IMAGE_GEN_BASE_URL` | The base URL for the image generation API | `SN_BASE_URL`, then `"https://token.sensenova.cn/v1"` | - Network accessline 93
The default values are recommended for the [SenseNova](https://platform.sensenova.cn/). - Network accessline 93
The default values are recommended for the [SenseNova](https://platform.sensenova.cn/). - Access to secretsline 95
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Network accessline 102
```ini # (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 102
```ini # (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 103
# (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 103
# (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 113
```ini # (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 113
```ini # (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 114
# (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 114
# (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 115
SN_IMAGE_GEN_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 115
SN_IMAGE_GEN_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 116
# For Google's Nano Banana model API SN_IMAGE_GEN_BASE_URL="https://generativelanguage.googleapis.com" # For OpenAI's image generation API - Network accessline 116
# For Google's Nano Banana model API SN_IMAGE_GEN_BASE_URL="https://generativelanguage.googleapis.com" # For OpenAI's image generation API - Network accessline 117
SN_IMAGE_GEN_BASE_URL="https://generativelanguage.googleapis.com" - Network accessline 117
SN_IMAGE_GEN_BASE_URL="https://generativelanguage.googleapis.com" - Network accessline 118
# For OpenAI's image generation API SN_IMAGE_GEN_BASE_URL="https://api.openai.com/v1" ``` - Network accessline 118
# For OpenAI's image generation API SN_IMAGE_GEN_BASE_URL="https://api.openai.com/v1" ``` - Network accessline 119
SN_IMAGE_GEN_BASE_URL="https://api.openai.com/v1" - Network accessline 119
SN_IMAGE_GEN_BASE_URL="https://api.openai.com/v1" - Network accessline 124
```ini # (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 124
```ini # (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 125
# (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 125
# (Default) For [SenseNova](https://platform.sensenova.cn/) - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Access to secretsline 138
[Credential-related source omitted] - Network accessline 150
| ----------- | ----------- | ------- | | `SN_CHAT_API_KEY` | API key for text and vision chat calls | `SN_API_KEY` | | `SN_CHAT_BASE_URL` | Shared base URL for the chat API | `SN_BASE_URL`, then `"https://token.sensenova.cn/v1"` | - Network accessline 150
| ----------- | ----------- | ------- | | `SN_CHAT_API_KEY` | API key for text and vision chat calls | `SN_API_KEY` | | `SN_CHAT_BASE_URL` | Shared base URL for the chat API | `SN_BASE_URL`, then `"https://token.sensenova.cn/v1"` | - Network accessline 151
[Credential-related source omitted] - Network accessline 151
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Network accessline 152
| `SN_CHAT_BASE_URL` | Shared base URL for the chat API | `SN_BASE_URL`, then `"https://token.sensenova.cn/v1"` | - Network accessline 152
| `SN_CHAT_BASE_URL` | Shared base URL for the chat API | `SN_BASE_URL`, then `"https://token.sensenova.cn/v1"` | - Access to secretsline 155
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted] - Network accessline 164
The default values are recommended for the [SenseNova](https://platform.sensenova.cn/). - Network accessline 164
The default values are recommended for the [SenseNova](https://platform.sensenova.cn/). - Network accessline 168
For chat calls, the runner also accepts host-only base URLs such as `https://token.sensenova.cn`: if no URL path is present, it appends the API - Network accessline 168
For chat calls, the runner also accepts host-only base URLs such as `https://token.sensenova.cn`: if no URL path is present, it appends the API - Network accessline 169
`https://token.sensenova.cn`: if no URL path is present, it appends the API - Network accessline 169
`https://token.sensenova.cn`: if no URL path is present, it appends the API - Network accessline 170
version path before the interface endpoint. Prefer the documented versioned base URL, for example `https://token.sensenova.cn/v1`, for consistency with the built-in defaults. - Network accessline 170
version path before the interface endpoint. Prefer the documented versioned base URL, for example `https://token.sensenova.cn/v1`, for consistency with the built-in defaults. - Network accessline 171
base URL, for example `https://token.sensenova.cn/v1`, for consistency with the - Network accessline 171
base URL, for example `https://token.sensenova.cn/v1`, for consistency with the - Network accessline 187
```ini # (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 187
```ini # (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 188
# (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 188
# (Default) For [SenseNova](https://platform.sensenova.cn/) - Network accessline 189
SN_CHAT_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 189
SN_CHAT_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 190
# For Anthropic Messages API SN_CHAT_BASE_URL="https://api.anthropic.com/v1" # For OpenAI's chat completion API - Network accessline 190
# For Anthropic Messages API SN_CHAT_BASE_URL="https://api.anthropic.com/v1" # For OpenAI's chat completion API - Network accessline 191
SN_CHAT_BASE_URL="https://api.anthropic.com/v1" - Network accessline 191
SN_CHAT_BASE_URL="https://api.anthropic.com/v1" - Network accessline 192
# For OpenAI's chat completion API SN_CHAT_BASE_URL="https://api.openai.com/v1" # For Google Gemini API (OpenAI-compatible) - Network accessline 192
# For OpenAI's chat completion API SN_CHAT_BASE_URL="https://api.openai.com/v1" # For Google Gemini API (OpenAI-compatible) - Network accessline 193
SN_CHAT_BASE_URL="https://api.openai.com/v1" - Network accessline 193
SN_CHAT_BASE_URL="https://api.openai.com/v1" - Network accessline 194
# For Google Gemini API (OpenAI-compatible) SN_CHAT_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/" ``` - Network accessline 194
# For Google Gemini API (OpenAI-compatible) SN_CHAT_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/" ``` - Network accessline 195
SN_CHAT_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/" - Network accessline 195
SN_CHAT_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/" - Access to secretsline 211
[Credential-related source omitted] - Access to secretsline 211
[Credential-related source omitted] - Access to secretsline 214
[Credential-related source omitted] - Access to secretsline 214
[Credential-related source omitted] - Access to secretsline 222
[Credential-related source omitted] - Access to secretsline 222
[Credential-related source omitted] - Network accessline 226
- Symptom: request fails immediately, or URL validation/auth endpoint errors. - Fix: verify `SN_BASE_URL` or capability-specific base URLs are full base URLs (with scheme + host), for example `https://token.sensenova.cn/v1`. - Network accessline 226
- Symptom: request fails immediately, or URL validation/auth endpoint errors. - Fix: verify `SN_BASE_URL` or capability-specific base URLs are full base URLs (with scheme + host), for example `https://token.sensenova.cn/v1`. - Network accessline 227
- Fix: verify `SN_BASE_URL` or capability-specific base URLs are full base URLs (with scheme + host), for example `https://token.sensenova.cn/v1`. - Network accessline 227
- Fix: verify `SN_BASE_URL` or capability-specific base URLs are full base URLs (with scheme + host), for example `https://token.sensenova.cn/v1`.
skills/sn-image-base/README_CN.md
- Network accessline 3
该技能属于 [SenseNova-Skills](https://github.com/OpenSenseNova/SenseNova-Skills) 项目,提供图像生成、图像识别(VLM)和文本优化(LLM)的底层 API 能力。 - Network accessline 22
- 图像生成: - [SenseNova](https://platform.sensenova.cn/) - Network accessline 23
- [SenseNova](https://platform.sensenova.cn/) - Network accessline 27
- 文本与视觉 Chat: - [SenseNova](https://platform.sensenova.cn/) - Network accessline 28
- [SenseNova](https://platform.sensenova.cn/) - Network accessline 36
推荐使用 [SenseNova Token Plan](https://platform.sensenova.cn/token-plan)。 - Network accessline 38
前往 <https://platform.sensenova.cn/token-plan/> 注册免费账号,并获取可用于图像生成和 chat 调用的 API Key。 - Network accessline 43
# 如果所有能力都走同一个网关,只需要配置这两个变量。 SN_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 44
SN_BASE_URL="https://token.sensenova.cn/v1" - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 88
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Network accessline 91
| `SN_IMAGE_GEN_MODEL_TYPE` | 图像生成模型类型 | `"sensenova"` | | `SN_IMAGE_GEN_MODEL` | 图像生成模型名 | `"sensenova-u1.5-lite"` | | `SN_IMAGE_GEN_BASE_URL` | 图像生成 API 的基础 URL | `SN_BASE_URL`,然后 `"https://token.sensenova.cn/v1"` | - Network accessline 93
| `SN_IMAGE_GEN_BASE_URL` | 图像生成 API 的基础 URL | `SN_BASE_URL`,然后 `"https://token.sensenova.cn/v1"` | - Network accessline 95
默认值适用于 [SenseNova](https://platform.sensenova.cn/)。 - Access to secretsline 97
[Credential-related source omitted] - Network accessline 104
```ini # (默认)用于 [SenseNova](https://platform.sensenova.cn/) - Network accessline 105
# (默认)用于 [SenseNova](https://platform.sensenova.cn/) - Network accessline 115
```ini # (默认)用于 [SenseNova](https://platform.sensenova.cn/) - Network accessline 116
# (默认)用于 [SenseNova](https://platform.sensenova.cn/) - Network accessline 117
SN_IMAGE_GEN_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 118
# 用于 Google Nano Banana 模型 API SN_IMAGE_GEN_BASE_URL="https://generativelanguage.googleapis.com" # 用于 OpenAI 图像生成 API - Network accessline 119
SN_IMAGE_GEN_BASE_URL="https://generativelanguage.googleapis.com" - Network accessline 120
# 用于 OpenAI 图像生成 API SN_IMAGE_GEN_BASE_URL="https://api.openai.com/v1" ``` - Network accessline 121
SN_IMAGE_GEN_BASE_URL="https://api.openai.com/v1" - Network accessline 126
```ini # (默认)用于 [SenseNova](https://platform.sensenova.cn/) - Network accessline 127
# (默认)用于 [SenseNova](https://platform.sensenova.cn/) - Access to secretsline 137
[Credential-related source omitted] - Access to secretsline 140
[Credential-related source omitted] - Network accessline 150
| ------ | ---- | ------ | | `SN_CHAT_API_KEY` | text/vision chat 调用共用 API key | `SN_API_KEY` | | `SN_CHAT_BASE_URL` | 共享 Chat API 基础 URL | `SN_BASE_URL`,然后 `"https://token.sensenova.cn/v1"` | - Network accessline 151
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Network accessline 152
| `SN_CHAT_BASE_URL` | 共享 Chat API 基础 URL | `SN_BASE_URL`,然后 `"https://token.sensenova.cn/v1"` | - Access to secretsline 155
[Credential-related source omitted] - Access to secretsline 159
[Credential-related source omitted] - Network accessline 164
默认值适用于 [SenseNova](https://platform.sensenova.cn/)。 - Network accessline 168
对于 chat 调用,runner 也兼容不带路径的 host-only base URL,例如 `https://token.sensenova.cn`:如果 URL 中没有 path,会先补上 API 版本路径再追加具体接口。 - Network accessline 169
`https://token.sensenova.cn`:如果 URL 中没有 path,会先补上 API 版本路径再追加具体接口。 - Network accessline 171
`https://token.sensenova.cn/v1`。 - Network accessline 186
```ini # (默认)用于 [SenseNova](https://platform.sensenova.cn/) - Network accessline 187
# (默认)用于 [SenseNova](https://platform.sensenova.cn/) - Network accessline 188
SN_CHAT_BASE_URL="https://token.sensenova.cn/v1" - Network accessline 189
# 用于 Anthropic Messages API SN_CHAT_BASE_URL="https://api.anthropic.com/v1" # 用于 OpenAI Chat Completion API - Network accessline 190
SN_CHAT_BASE_URL="https://api.anthropic.com/v1" - Network accessline 191
# 用于 OpenAI Chat Completion API SN_CHAT_BASE_URL="https://api.openai.com/v1" # 用于 Google Gemini API(OpenAI 兼容) - Network accessline 192
SN_CHAT_BASE_URL="https://api.openai.com/v1" - Network accessline 193
# 用于 Google Gemini API(OpenAI 兼容) SN_CHAT_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/" ``` - Network accessline 194
SN_CHAT_BASE_URL="https://generativelanguage.googleapis.com/v1beta/openai/" - Access to secretsline 210
[Credential-related source omitted] - Access to secretsline 213
[Credential-related source omitted] - Access to secretsline 221
[Credential-related source omitted] - Network accessline 225
- 现象:请求立即失败,或出现 URL 校验 / endpoint 相关错误。 - 处理:检查 `SN_BASE_URL` 或能力专用 base URL 是否为完整基础 URL(包含 scheme + host),例如 `https://token.sensenova.cn/v1`。 - Network accessline 226
- 处理:检查 `SN_BASE_URL` 或能力专用 base URL 是否为完整基础 URL(包含 scheme + host),例如 `https://token.sensenova.cn/v1`。
skills/sn-image-base/SKILL.md
- Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 56
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Network accessline 135
python scripts/sn_agent_runner.py sn-image-generate --prompt "..." --base-url "https://custom-endpoint.com/v1" - Network accessline 135
python scripts/sn_agent_runner.py sn-image-generate --prompt "..." --base-url "https://custom-endpoint.com/v1" - Network accessline 135
python scripts/sn_agent_runner.py sn-image-generate --prompt "..." --base-url "https://custom-endpoint.com/v1" - Network accessline 137
--base-url "https://custom-endpoint.com/v1" - Network accessline 137
--base-url "https://custom-endpoint.com/v1" - Network accessline 137
--base-url "https://custom-endpoint.com/v1" - Network accessline 150
python scripts/sn_agent_runner.py sn-image-recognize --user-prompt "Describe the image" --images "path/to/image.png" --api-key "sk-ant-xxx" --base-url "https://api.anthropic.com" - Network accessline 150
python scripts/sn_agent_runner.py sn-image-recognize --user-prompt "Describe the image" --images "path/to/image.png" --api-key "sk-ant-xxx" --base-url "https://api.anthropic.com" - Network accessline 150
python scripts/sn_agent_runner.py sn-image-recognize --user-prompt "Describe the image" --images "path/to/image.png" --api-key "sk-ant-xxx" --base-url "https://api.anthropic.com" - Network accessline 152
--images "path/to/image.png" \ --api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ - Network accessline 152
--images "path/to/image.png" \ --api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ - Network accessline 152
--images "path/to/image.png" \ --api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ - Network accessline 153
--api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ --model "claude-sonnet-4-6" \ - Network accessline 153
--api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ --model "claude-sonnet-4-6" \ - Network accessline 153
--api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ --model "claude-sonnet-4-6" \ - Network accessline 154
--base-url "https://api.anthropic.com" \ - Network accessline 154
--base-url "https://api.anthropic.com" \ - Network accessline 154
--base-url "https://api.anthropic.com" \ - Network accessline 163
python scripts/sn_agent_runner.py sn-text-optimize --user-prompt "Optimize the text: ..." --api-key "sk-ant-xxx" --base-url "https://api.anthropic.com" - Network accessline 163
python scripts/sn_agent_runner.py sn-text-optimize --user-prompt "Optimize the text: ..." --api-key "sk-ant-xxx" --base-url "https://api.anthropic.com" - Network accessline 163
python scripts/sn_agent_runner.py sn-text-optimize --user-prompt "Optimize the text: ..." --api-key "sk-ant-xxx" --base-url "https://api.anthropic.com" - Network accessline 165
--api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ - Network accessline 165
--api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ - Network accessline 165
--api-key "sk-ant-xxx" \ --base-url "https://api.anthropic.com" \ - Network accessline 166
--base-url "https://api.anthropic.com" \ - Network accessline 166
--base-url "https://api.anthropic.com" \ - Network accessline 166
--base-url "https://api.anthropic.com" \ - Access to secretsline 178
[Credential-related source omitted] - Access to secretsline 178
[Credential-related source omitted] - Access to secretsline 178
[Credential-related source omitted] - Network accessline 183
|------|-----------|-------------|-------------| | `--api-key` | None (must be provided) | `SN_VISION_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | `SN_TEXT_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | | `--base-url` | `https://token.s - Network accessline 183
|------|-----------|-------------|-------------| | `--api-key` | None (must be provided) | `SN_VISION_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | `SN_TEXT_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | | `--base-url` | `https://token.s - Network accessline 183
|------|-----------|-------------|-------------| | `--api-key` | None (must be provided) | `SN_VISION_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | `SN_TEXT_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | | `--base-url` | `https://token.s - Network accessline 184
[Credential-related source omitted] - Network accessline 184
[Credential-related source omitted] - Network accessline 184
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted] - Network accessline 185
| `--base-url` | `https://token.sensenova.cn/v1` | `SN_VISION_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | `SN_TEXT_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | - Network accessline 185
| `--base-url` | `https://token.sensenova.cn/v1` | `SN_VISION_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | `SN_TEXT_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | - Network accessline 185
| `--base-url` | `https://token.sensenova.cn/v1` | `SN_VISION_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | `SN_TEXT_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | - Access to secretsline 189
[Credential-related source omitted] - Access to secretsline 189
[Credential-related source omitted] - Access to secretsline 189
[Credential-related source omitted] - Network accessline 197
| CLI Parameter | openclaw.json Field | Example | |-----------|-------------------|--------| | `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | - Network accessline 197
| CLI Parameter | openclaw.json Field | Example | |-----------|-------------------|--------| | `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | - Network accessline 197
| CLI Parameter | openclaw.json Field | Example | |-----------|-------------------|--------| | `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | - Network accessline 198
|-----------|-------------------|--------| | `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | | `--llm-type` | `providers.<name>.api` | `anthropic-messages` / `openai-completions` | - Network accessline 198
|-----------|-------------------|--------| | `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | | `--llm-type` | `providers.<name>.api` | `anthropic-messages` / `openai-completions` | - Network accessline 198
|-----------|-------------------|--------| | `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | | `--llm-type` | `providers.<name>.api` | `anthropic-messages` / `openai-completions` | - Network accessline 199
| `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | - Network accessline 199
| `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | - Network accessline 199
| `--base-url` | `providers.<name>.baseUrl` | `https://api.anthropic.com` | - Network accessline 219
| Type | `--llm-type` / `--vlm-type` | Recommended base-url | Code Appended Path | Final URL Example | |------|------------------------------|---------------|--------------|---------------| | LLM | `openai-completions` | `https://token.sens - Network accessline 219
| Type | `--llm-type` / `--vlm-type` | Recommended base-url | Code Appended Path | Final URL Example | |------|------------------------------|---------------|--------------|---------------| | LLM | `openai-completions` | `https://token.sens - Network accessline 219
| Type | `--llm-type` / `--vlm-type` | Recommended base-url | Code Appended Path | Final URL Example | |------|------------------------------|---------------|--------------|---------------| | LLM | `openai-completions` | `https://token.sens - Network accessline 220
|------|------------------------------|---------------|--------------|---------------| | LLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | | LLM | `anthro - Network accessline 220
|------|------------------------------|---------------|--------------|---------------| | LLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | | LLM | `anthro - Network accessline 220
|------|------------------------------|---------------|--------------|---------------| | LLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | | LLM | `anthro - Network accessline 221
| LLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | - Network accessline 221
| LLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | - Network accessline 221
| LLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | - Network accessline 222
| LLM | `anthropic-messages` | `https://api.anthropic.com/v1` | `/messages` | `https://api.anthropic.com/v1/messages` | - Network accessline 222
| LLM | `anthropic-messages` | `https://api.anthropic.com/v1` | `/messages` | `https://api.anthropic.com/v1/messages` | - Network accessline 222
| LLM | `anthropic-messages` | `https://api.anthropic.com/v1` | `/messages` | `https://api.anthropic.com/v1/messages` | - Network accessline 223
| VLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | - Network accessline 223
| VLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | - Network accessline 223
| VLM | `openai-completions` | `https://token.sensenova.cn/v1` | `/chat/completions` | `https://token.sensenova.cn/v1/chat/completions` | - Network accessline 224
| VLM | `anthropic-messages` | `https://api.anthropic.com/v1` | `/messages` | `https://api.anthropic.com/v1/messages` | - Network accessline 224
| VLM | `anthropic-messages` | `https://api.anthropic.com/v1` | `/messages` | `https://api.anthropic.com/v1/messages` | - Network accessline 224
| VLM | `anthropic-messages` | `https://api.anthropic.com/v1` | `/messages` | `https://api.anthropic.com/v1/messages` | - Network accessline 245
"result": "...", "model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", - Network accessline 245
"result": "...", "model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", - Network accessline 245
"result": "...", "model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", - Network accessline 246
"model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", "interface_type": "openai-completions", - Network accessline 246
"model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", "interface_type": "openai-completions", - Network accessline 246
"model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", "interface_type": "openai-completions", - Network accessline 247
"base_url": "https://token.sensenova.cn/v1", - Network accessline 247
"base_url": "https://token.sensenova.cn/v1", - Network accessline 247
"base_url": "https://token.sensenova.cn/v1",
skills/sn-image-base/references/api_spec.md
- Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted] - Access to secretsline 85
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 96
[Credential-related source omitted] - Access to secretsline 96
[Credential-related source omitted] - Network accessline 141
| `--images` | string[] | **Yes** | - | List of image paths (supports multiple) | | `--api-key` | string | No | No hardcoded default | CLI > `SN_VISION_API_KEY` > `SN_CHAT_API_KEY` > `SN_API_KEY`; raises `MissingApiKeyError` if all are empt - Network accessline 141
| `--images` | string[] | **Yes** | - | List of image paths (supports multiple) | | `--api-key` | string | No | No hardcoded default | CLI > `SN_VISION_API_KEY` > `SN_CHAT_API_KEY` > `SN_API_KEY`; raises `MissingApiKeyError` if all are empt - Network accessline 142
[Credential-related source omitted] - Network accessline 142
[Credential-related source omitted] - Access to secretsline 142
[Credential-related source omitted] - Access to secretsline 142
[Credential-related source omitted] - Network accessline 143
| `--base-url` | string | No | `https://token.sensenova.cn/v1` | CLI > `SN_VISION_BASE_URL` > `SN_CHAT_BASE_URL` > `SN_BASE_URL` | - Network accessline 143
| `--base-url` | string | No | `https://token.sensenova.cn/v1` | CLI > `SN_VISION_BASE_URL` > `SN_CHAT_BASE_URL` > `SN_BASE_URL` | - Network accessline 168
"result": "This image shows an adorable orange cat napping in the sunlight.", "model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", - Network accessline 168
"result": "This image shows an adorable orange cat napping in the sunlight.", "model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", - Network accessline 169
"model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", "interface_type": "openai-completions", - Network accessline 169
"model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", "interface_type": "openai-completions", - Network accessline 170
"base_url": "https://token.sensenova.cn/v1", - Network accessline 170
"base_url": "https://token.sensenova.cn/v1", - Network accessline 181
|-----------|-----------------|---------------------| | `--api-key` | None (required) | `SN_VISION_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | | `--base-url` | `https://token.sensenova.cn/v1` | `SN_VISION_BASE_URL` -> `SN_CHAT_BASE_URL` - Network accessline 181
|-----------|-----------------|---------------------| | `--api-key` | None (required) | `SN_VISION_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | | `--base-url` | `https://token.sensenova.cn/v1` | `SN_VISION_BASE_URL` -> `SN_CHAT_BASE_URL` - Network accessline 182
[Credential-related source omitted] - Network accessline 182
[Credential-related source omitted] - Access to secretsline 182
[Credential-related source omitted] - Access to secretsline 182
[Credential-related source omitted] - Network accessline 183
| `--base-url` | `https://token.sensenova.cn/v1` | `SN_VISION_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | - Network accessline 183
| `--base-url` | `https://token.sensenova.cn/v1` | `SN_VISION_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | - Network accessline 187
Compatibility note: host-only chat base URLs such as `https://token.sensenova.cn` - Network accessline 187
Compatibility note: host-only chat base URLs such as `https://token.sensenova.cn` - Network accessline 217
| `--user-prompt-path` | path | One of two | - | Local file path to read user instruction from (mutually exclusive with `--user-prompt`) | | `--api-key` | string | No | No hardcoded default | CLI > `SN_TEXT_API_KEY` > `SN_CHAT_API_KEY` > `S - Network accessline 217
| `--user-prompt-path` | path | One of two | - | Local file path to read user instruction from (mutually exclusive with `--user-prompt`) | | `--api-key` | string | No | No hardcoded default | CLI > `SN_TEXT_API_KEY` > `SN_CHAT_API_KEY` > `S - Network accessline 218
[Credential-related source omitted] - Network accessline 218
[Credential-related source omitted] - Access to secretsline 218
[Credential-related source omitted] - Access to secretsline 218
[Credential-related source omitted] - Network accessline 219
| `--base-url` | string | No | `https://token.sensenova.cn/v1` | CLI > `SN_TEXT_BASE_URL` > `SN_CHAT_BASE_URL` > `SN_BASE_URL` | - Network accessline 219
| `--base-url` | string | No | `https://token.sensenova.cn/v1` | CLI > `SN_TEXT_BASE_URL` > `SN_CHAT_BASE_URL` > `SN_BASE_URL` | - Network accessline 244
"result": "Optimized text content...", "model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", - Network accessline 244
"result": "Optimized text content...", "model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", - Network accessline 245
"model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", "interface_type": "openai-completions", - Network accessline 245
"model": "sensenova-6.8-flash-lite", "base_url": "https://token.sensenova.cn/v1", "interface_type": "openai-completions", - Network accessline 246
"base_url": "https://token.sensenova.cn/v1", - Network accessline 246
"base_url": "https://token.sensenova.cn/v1", - Network accessline 257
|-----------|-----------------|---------------------| | `--api-key` | None (required) | `SN_TEXT_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | | `--base-url` | `https://token.sensenova.cn/v1` | `SN_TEXT_BASE_URL` -> `SN_CHAT_BASE_URL` -> - Network accessline 257
|-----------|-----------------|---------------------| | `--api-key` | None (required) | `SN_TEXT_API_KEY` -> `SN_CHAT_API_KEY` -> `SN_API_KEY` | | `--base-url` | `https://token.sensenova.cn/v1` | `SN_TEXT_BASE_URL` -> `SN_CHAT_BASE_URL` -> - Network accessline 258
[Credential-related source omitted] - Network accessline 258
[Credential-related source omitted] - Access to secretsline 258
[Credential-related source omitted] - Access to secretsline 258
[Credential-related source omitted] - Network accessline 259
| `--base-url` | `https://token.sensenova.cn/v1` | `SN_TEXT_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | - Network accessline 259
| `--base-url` | `https://token.sensenova.cn/v1` | `SN_TEXT_BASE_URL` -> `SN_CHAT_BASE_URL` -> `SN_BASE_URL` | - Network accessline 263
Compatibility note: host-only chat base URLs such as `https://token.sensenova.cn` - Network accessline 263
Compatibility note: host-only chat base URLs such as `https://token.sensenova.cn` - Access to secretsline 306
[Credential-related source omitted] - Access to secretsline 306
[Credential-related source omitted] - Access to secretsline 307
[Credential-related source omitted] - Access to secretsline 307
[Credential-related source omitted] - Access to secretsline 308
[Credential-related source omitted] - Access to secretsline 308
[Credential-related source omitted] - Access to secretsline 310
[Credential-related source omitted] - Access to secretsline 310
[Credential-related source omitted]
skills/sn-image-base/scripts/.python-version
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/extract_json.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-image-base/scripts/sn_agent_runner.py
- Executable scriptline 1
Executable file - Executable scriptline 1
Executable file - Access to secretsline 118
[Credential-related source omitted] - Access to secretsline 118
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 135
[Credential-related source omitted] - Access to secretsline 162
[Credential-related source omitted] - Access to secretsline 162
[Credential-related source omitted] - Access to secretsline 199
[Credential-related source omitted] - Access to secretsline 199
[Credential-related source omitted] - Access to secretsline 244
[Credential-related source omitted] - Access to secretsline 244
[Credential-related source omitted] - Access to secretsline 245
[Credential-related source omitted] - Access to secretsline 245
[Credential-related source omitted] - Access to secretsline 246
[Credential-related source omitted] - Access to secretsline 246
[Credential-related source omitted] - Access to secretsline 261
[Credential-related source omitted] - Access to secretsline 261
[Credential-related source omitted] - Access to secretsline 276
[Credential-related source omitted] - Access to secretsline 276
[Credential-related source omitted] - Access to secretsline 291
[Credential-related source omitted] - Access to secretsline 291
[Credential-related source omitted] - Access to secretsline 334
[Credential-related source omitted] - Access to secretsline 334
[Credential-related source omitted] - Access to secretsline 335
[Credential-related source omitted] - Access to secretsline 335
[Credential-related source omitted] - Access to secretsline 336
[Credential-related source omitted] - Access to secretsline 336
[Credential-related source omitted] - Access to secretsline 341
[Credential-related source omitted] - Access to secretsline 341
[Credential-related source omitted] - Access to secretsline 380
[Credential-related source omitted] - Access to secretsline 380
[Credential-related source omitted] - Access to secretsline 383
[Credential-related source omitted] - Access to secretsline 383
[Credential-related source omitted] - Access to secretsline 427
[Credential-related source omitted] - Access to secretsline 427
[Credential-related source omitted] - Access to secretsline 430
[Credential-related source omitted] - Access to secretsline 430
[Credential-related source omitted] - Access to secretsline 457
[Credential-related source omitted] - Access to secretsline 457
[Credential-related source omitted] - Access to secretsline 459
[Credential-related source omitted] - Access to secretsline 459
[Credential-related source omitted] - Access to secretsline 469
[Credential-related source omitted] - Access to secretsline 469
[Credential-related source omitted] - Access to secretsline 471
[Credential-related source omitted] - Access to secretsline 471
[Credential-related source omitted] - Access to secretsline 488
[Credential-related source omitted] - Access to secretsline 488
[Credential-related source omitted] - Access to secretsline 509
[Credential-related source omitted] - Access to secretsline 509
[Credential-related source omitted] - Access to secretsline 510
[Credential-related source omitted] - Access to secretsline 510
[Credential-related source omitted] - Access to secretsline 512
[Credential-related source omitted] - Access to secretsline 512
[Credential-related source omitted] - Access to secretsline 516
[Credential-related source omitted] - Access to secretsline 516
[Credential-related source omitted] - Access to secretsline 530
[Credential-related source omitted] - Access to secretsline 530
[Credential-related source omitted] - Access to secretsline 534
[Credential-related source omitted] - Access to secretsline 534
[Credential-related source omitted] - Access to secretsline 546
[Credential-related source omitted] - Access to secretsline 546
[Credential-related source omitted] - Access to secretsline 560
[Credential-related source omitted] - Access to secretsline 560
[Credential-related source omitted]
skills/sn-image-base/scripts/sn_image_base/__init__.py
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/sn_image_base/configs.py
- Executable scriptline 1
Executable file - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 70
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 94
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Network accessline 97
SN_IMAGE_GEN_BASE_URL: Annotated[ str, Field("SN_IMAGE_GEN_BASE_URL", "SN_BASE_URL", required=True) ] = "https://token.sensenova.cn/v1" - Network accessline 98
str, Field("SN_IMAGE_GEN_BASE_URL", "SN_BASE_URL", required=True) ] = "https://token.sensenova.cn/v1" SN_IMAGE_GEN_MODEL_TYPE: Annotated[ - Network accessline 99
] = "https://token.sensenova.cn/v1" - Network accessline 107
[Credential-related source omitted] - Access to secretsline 107
[Credential-related source omitted] - Network accessline 108
SN_CHAT_BASE_URL: Annotated[str, Field("SN_CHAT_BASE_URL", "SN_BASE_URL")] = ( "https://token.sensenova.cn/v1" ) - Network accessline 109
"https://token.sensenova.cn/v1" - Access to secretsline 115
[Credential-related source omitted] - Access to secretsline 116
[Credential-related source omitted] - Access to secretsline 128
[Credential-related source omitted] - Access to secretsline 129
[Credential-related source omitted] - Access to secretsline 184
[Credential-related source omitted] - Access to secretsline 186
[Credential-related source omitted] - Access to secretsline 187
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted] - Access to secretsline 210
[Credential-related source omitted] - Access to secretsline 266
[Credential-related source omitted]
skills/sn-image-base/scripts/sn_image_base/exceptions.py
skills/sn-image-base/scripts/sn_image_base/generation/__init__.py
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/sn_image_base/generation/core/__init__.py
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/sn_image_base/generation/core/client_base.py
skills/sn-image-base/scripts/sn_image_base/generation/nano_banana.py
- Executable scriptline 1
Executable file - Network accessline 26
# Gemini finishReason values that indicate content was blocked by safety/policy filters. # See: https://ai.google.dev/api/generate-content#FinishReason - Network accessline 27
# See: https://ai.google.dev/api/generate-content#FinishReason - Access to secretsline 41
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Access to secretsline 145
[Credential-related source omitted] - Possible obfuscationline 179
image_bytes = base64.b64decode(image) - Access to secretsline 203
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted] - Access to secretsline 205
[Credential-related source omitted] - Access to secretsline 208
[Credential-related source omitted] - Access to secretsline 211
[Credential-related source omitted] - Access to secretsline 277
[Credential-related source omitted]
skills/sn-image-base/scripts/sn_image_base/generation/openai_image.py
- Executable scriptline 1
Executable file - Access to secretsline 39
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 154
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted] - Access to secretsline 205
[Credential-related source omitted] - Access to secretsline 206
[Credential-related source omitted] - Access to secretsline 209
[Credential-related source omitted] - Access to secretsline 212
[Credential-related source omitted] - Access to secretsline 273
[Credential-related source omitted] - Possible obfuscationline 319
decoded = base64.b64decode(b64_data)
skills/sn-image-base/scripts/sn_image_base/generation/sensenova.py
- Executable scriptline 1
Executable file - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 80
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Access to secretsline 84
[Credential-related source omitted] - Access to secretsline 100
[Credential-related source omitted] - Access to secretsline 215
[Credential-related source omitted] - Access to secretsline 263
[Credential-related source omitted] - Access to secretsline 264
[Credential-related source omitted] - Access to secretsline 265
[Credential-related source omitted] - Access to secretsline 268
[Credential-related source omitted] - Access to secretsline 271
[Credential-related source omitted] - Access to secretsline 345
[Credential-related source omitted] - Access to secretsline 348
[Credential-related source omitted] - Access to secretsline 352
[Credential-related source omitted] - Network accessline 406
{ "data": [{ "url": "https://cdn.sensenova.dev/gen/..." - Network accessline 407
"data": [{ "url": "https://cdn.sensenova.dev/gen/..." }] - Network accessline 408
"url": "https://cdn.sensenova.dev/gen/..." - Network accessline 453
) as temp_file: temp_path = Path(temp_file.name) async with httpx.AsyncClient(timeout=timeout) as client: - Network accessline 454
temp_path = Path(temp_file.name) async with httpx.AsyncClient(timeout=timeout) as client: async with client.stream("GET", url) as response: - Network accessline 455
async with httpx.AsyncClient(timeout=timeout) as client: - Access to secretsline 567
[Credential-related source omitted]
skills/sn-image-base/scripts/sn_image_base/llm/__init__.py
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/sn_image_base/llm/anthropic_adapter.py
- Executable scriptline 1
Executable file - Access to secretsline 29
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Network accessline 50
def _get_client(self) -> httpx.AsyncClient: if self._client is None: self._client = httpx.AsyncClient(timeout=self._timeout) - Network accessline 51
if self._client is None: self._client = httpx.AsyncClient(timeout=self._timeout) return self._client - Network accessline 52
self._client = httpx.AsyncClient(timeout=self._timeout)
skills/sn-image-base/scripts/sn_image_base/llm/chat_completions_adapter.py
- Executable scriptline 1
Executable file - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Network accessline 61
def _get_client(self) -> httpx.AsyncClient: if self._client is None: self._client = httpx.AsyncClient(timeout=self._timeout) - Network accessline 62
if self._client is None: self._client = httpx.AsyncClient(timeout=self._timeout) return self._client - Network accessline 63
self._client = httpx.AsyncClient(timeout=self._timeout) - Access to secretsline 233
[Credential-related source omitted] - Access to secretsline 248
[Credential-related source omitted] - Access to secretsline 249
[Credential-related source omitted] - Access to secretsline 251
[Credential-related source omitted] - Access to secretsline 257
[Credential-related source omitted]
skills/sn-image-base/scripts/sn_image_base/llm/llm_adapter.py
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/sn_image_base/utils/__init__.py
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/sn_image_base/utils/error_utils.py
skills/sn-image-base/scripts/sn_image_base/utils/httpx_client.py
- Executable scriptline 1
Executable file - Network accessline 62
Automatically uses proxy from environment variables (HTTPS_PROXY, HTTP_PROXY, etc.) when trust_env=True (default). Supports proxy authentication via URL format: http://username:password@proxy_host:port - Network accessline 64
http://username:password@proxy_host:port - Network accessline 77
verify: If False, disable SSL certificate verification (avoids CERTIFICATE_VERIFY_FAILED). Use only for dev/testing or trusted networks. **client_kwargs: Passed through to httpx.AsyncClient (e.g. base_url). - Network accessline 79
**client_kwargs: Passed through to httpx.AsyncClient (e.g. base_url). - Network accessline 84
Example: # Set proxy with authentication in environment export HTTP_PROXY="http://user:pass@proxy.example.com:3128" - Network accessline 85
# Set proxy with authentication in environment export HTTP_PROXY="http://user:pass@proxy.example.com:3128" export HTTPS_PROXY="http://user:pass@proxy.example.com:3128" - Network accessline 86
export HTTP_PROXY="http://user:pass@proxy.example.com:3128" - Network accessline 87
export HTTPS_PROXY="http://user:pass@proxy.example.com:3128" - Network accessline 102
limits = httpx.Limits( - Network accessline 110
transport = httpx.AsyncHTTPTransport( - Network accessline 118
return httpx.AsyncClient( - Network accessline 119
transport=transport, headers=headers, timeout=httpx.Timeout(timeout, pool=pool_timeout), - Network accessline 120
headers=headers, timeout=httpx.Timeout(timeout, pool=pool_timeout), verify=verify, - Network accessline 121
timeout=httpx.Timeout(timeout, pool=pool_timeout),
skills/sn-image-base/scripts/sn_image_base/vlm/__init__.py
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/sn_image_base/vlm/utils.py
- Executable scriptline 1
Executable file
skills/sn-image-base/scripts/sn_image_base/vlm/vlm_adapter.py
- Executable scriptline 1
Executable file
skills/sn-image-doctor/SKILL.md
- Access to secretsline 7
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 69
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Network accessline 147
[Credential-related source omitted] - Access to secretsline 148
[Credential-related source omitted] - Network accessline 149
export SN_BASE_URL="https://your-api-endpoint.com" - Access to secretsline 151
[Credential-related source omitted] - Network accessline 152
[Credential-related source omitted] - Access to secretsline 152
[Credential-related source omitted] - Network accessline 153
[Credential-related source omitted] - Access to secretsline 153
[Credential-related source omitted] - Network accessline 154
SN_BASE_URL=https://token.sensenova.cn/v1 - Access to secretsline 159
[Credential-related source omitted] - Access to secretsline 160
[Credential-related source omitted] - Access to secretsline 163
[Credential-related source omitted] - Network accessline 177
curl -I https://your-api-endpoint.com
skills/sn-image-doctor/scripts/check_environment.py
skills/sn-image-imitate/README.md
- Access to secretsline 10
[Credential-related source omitted] - Network accessline 58
The minimum environment variables to configure `sn-image-base` skill running with [SenseNova Token Plan](https://platform.sensenova.cn/token-plan): - Network accessline 61
SN_BASE_URL="https://token.sensenova.cn/v1" - Access to secretsline 62
[Credential-related source omitted]
skills/sn-image-imitate/README_CN.md
- Access to secretsline 10
[Credential-related source omitted] - Network accessline 58
使用 [SenseNova Token Plan](https://platform.sensenova.cn/token-plan) 运行 `sn-image-base` 技能所需的最小环境变量: - Network accessline 61
SN_BASE_URL="https://token.sensenova.cn/v1" - Access to secretsline 62
[Credential-related source omitted]
skills/sn-image-imitate/SKILL.md
- Network accessline 59
The minimum environment variables to configure `sn-image-base` skill running with [SenseNova Token Plan](https://platform.sensenova.cn/token-plan): - Network accessline 62
SN_BASE_URL="https://token.sensenova.cn/v1" - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted]
skills/sn-image-resume/SKILL.md
skills/sn-infographic/SKILL.md
skills/sn-motion-html/assets/template/.env.example
skills/sn-motion-html/assets/template/.gitignore
- Access to secretsline 1
[Credential-related source omitted]
skills/sn-motion-html/assets/template/content/story.json
- Network accessline 50
], "connectors": ["assets/video/connectors/01-opening-to-destination.mp4"], "sources": [{"label": "Replace with a source", "url": "https://example.com"}] - Network accessline 51
"connectors": ["assets/video/connectors/01-opening-to-destination.mp4"], "sources": [{"label": "Replace with a source", "url": "https://example.com"}] } - Network accessline 52
"sources": [{"label": "Replace with a source", "url": "https://example.com"}]
skills/sn-motion-html/assets/template/src/app.js
- Executable scriptline 1
Executable file - Network accessline 4
const dialog = document.getElementById('sources'); try { const response = await fetch('content/story.json', { cache: 'no-store' }); - Network accessline 5
try { const response = await fetch('content/story.json', { cache: 'no-store' }); if (!response.ok) throw new Error(`story.json returned ${response.status}`); - Network accessline 6
const response = await fetch('content/story.json', { cache: 'no-store' });
skills/sn-motion-html/assets/template/src/motion-runtime.js
- Executable scriptline 1
Executable file - Network accessline 282
if (reduced || segment.loading || segment.failed || !segment.clip) return; segment.loading = true; fetch(segment.clip) - Network accessline 283
segment.loading = true; fetch(segment.clip) .then((response) => response.ok ? response.blob() : Promise.reject(new Error(String(response.status)))) - Network accessline 284
fetch(segment.clip)
skills/sn-motion-html/references/schemas.md
- Network accessline 36
], "connectors": ["assets/video/connectors/01-opening-to-next.mp4"], "sources": [{"label": "Source title", "url": "https://example.com"}] - Network accessline 37
"connectors": ["assets/video/connectors/01-opening-to-next.mp4"], "sources": [{"label": "Source title", "url": "https://example.com"}] } - Network accessline 38
"sources": [{"label": "Source title", "url": "https://example.com"}]
skills/sn-motion-html/references/seedance.md
- Network accessline 7
- Base URL: `https://ark.cn-beijing.volces.com/api/v3` - Network accessline 28
[Credential-related source omitted] - Access to secretsline 28
[Credential-related source omitted] - Network accessline 29
ARK_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 - Network accessline 68
- https://www.volcengine.com/docs/82379/1520757?lang=zh - Network accessline 69
- https://www.volcengine.com/docs/82379/1521309?lang=zh
skills/sn-motion-html/scripts/contact_sheet.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-motion-html/scripts/init_project.py
skills/sn-motion-html/scripts/make_posters.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-motion-html/scripts/seedance_pipeline.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 27
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 286
[Credential-related source omitted] - Network accessline 287
if not key: raise SystemExit("ARK_API_KEY is not set in the project-local .env file") client = ArkClient(key, os.getenv("ARK_BASE_URL", "https://ark.cn-beijing.volces.com/api/v3")) - Network accessline 288
[Credential-related source omitted] - Access to secretsline 288
[Credential-related source omitted] - Network accessline 289
client = ArkClient(key, os.getenv("ARK_BASE_URL", "https://ark.cn-beijing.volces.com/api/v3"))
skills/sn-motion-html/scripts/serve_project.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 38
handler = partial(SafeHandler, directory=str(root)) server = ThreadingHTTPServer((args.host, args.port), handler) print(f"Serving {root} at http://{args.host}:{args.port}/") - Network accessline 39
server = ThreadingHTTPServer((args.host, args.port), handler) print(f"Serving {root} at http://{args.host}:{args.port}/") try: - Network accessline 40
print(f"Serving {root} at http://{args.host}:{args.port}/")
skills/sn-motion-html/scripts/verify_media.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-motion-html/tests/motion-runtime.test.cjs
- Executable scriptline 1
Executable file
skills/sn-ppt-creative/scripts/build_pptx.py
- Executable scriptline 1
Executable file
skills/sn-ppt-creative/scripts/resume_scan.py
- Executable scriptline 1
Executable file
skills/sn-ppt-creative/scripts/sanitize_prompt.py
- Executable scriptline 1
Executable file
skills/sn-ppt-dazzle/SKILL.md
- Network accessline 272
1. **JS 函数引用顺序**:顶层立即执行的主控函数不要直接调用尚未注册的全局函数;对可能未定义的加 `if (typeof fn === 'function')` 防御——首行 ReferenceError 会杀掉后续全部脚本(翻页/动画全挂)。 2. **Three.js 锁 r128**:`https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js`(UMD 全局最稳);OrbitControl - Network accessline 273
2. **Three.js 锁 r128**:`https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js`(UMD 全局最稳);OrbitControls 用 `three@0.128.0/examples/js/`,不要 r150+ 的路径(已废弃)。`ShaderMaterial({vertexColors:true})` 会自动注入 `attribute vec3 color`,vertexSha
skills/sn-ppt-dazzle/scripts/render_deck.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 84
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Access to secretsline 93
[Credential-related source omitted] - Access to secretsline 95
[Credential-related source omitted] - Access to secretsline 107
[Credential-related source omitted] - Access to secretsline 110
[Credential-related source omitted]
skills/sn-ppt-doctor/SKILL.md
- Access to secretsline 35
[Credential-related source omitted] - Network accessline 37
# OpenAI/SenseNova 兼容的同步 /images/generations 接口 SN_PPT_IMAGE_GEN_URL="https://your-host/images/generations" - Network accessline 38
SN_PPT_IMAGE_GEN_URL="https://your-host/images/generations" - Access to secretsline 39
[Credential-related source omitted]
skills/sn-ppt-doctor/ppt_doctor/check_environment.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 19
DEFAULT_SEARCH_BASE_URL = "https://google.serper.dev" - Access to secretsline 307
[Credential-related source omitted] - Access to secretsline 315
[Credential-related source omitted] - Access to secretsline 373
[Credential-related source omitted] - Access to secretsline 427
[Credential-related source omitted] - Access to secretsline 428
[Credential-related source omitted] - Access to secretsline 429
[Credential-related source omitted] - Access to secretsline 432
[Credential-related source omitted] - Access to secretsline 433
[Credential-related source omitted] - Access to secretsline 434
[Credential-related source omitted] - Access to secretsline 437
[Credential-related source omitted] - Access to secretsline 438
[Credential-related source omitted] - Access to secretsline 439
[Credential-related source omitted] - Access to secretsline 490
[Credential-related source omitted] - Access to secretsline 505
[Credential-related source omitted] - Access to secretsline 517
[Credential-related source omitted] - Access to secretsline 532
[Credential-related source omitted] - Network accessline 555
[Credential-related source omitted] - Network accessline 556
[Credential-related source omitted] - Access to secretsline 556
[Credential-related source omitted] - Network accessline 557
'SN_PPT_IMAGE_GEN_URL="https://your-host/images/generations"\n' - Access to secretsline 558
[Credential-related source omitted]
skills/sn-ppt-entry/scripts/parse_user_docs.py
- Executable scriptline 1
Executable file
skills/sn-ppt-entry/scripts/timing_helper.py
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/assets/vendor/echarts.min.js
- Executable scriptline 1
Executable file - Network accessline 9
* with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 - Network accessline 10
* * http://www.apache.org/licenses/LICENSE-2.0 * - Network accessline 11
* http://www.apache.org/licenses/LICENSE-2.0 - Possible obfuscationline 35
***************************************************************************** */var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype. - Network accessline 41
* * LICENSE * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt - Network accessline 42
* LICENSE * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt */ - Network accessline 43
* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt - Possible obfuscationline 45
var Fr={},Gr={};var Wr,Hr=function(){function t(t,e,n){var i=this;this._sleepAfterStill=10,this._stillFrameAccum=0,this._needsRefresh=!0,this._needsRefreshHover=!0,this._darkMode=!1,n=n||{},this.dom=e,this.id=t;var o=new rn,a=n.renderer||"c
skills/sn-ppt-standard/references/box-agent-tool-contract.md
- Access to secretsline 52
[Credential-related source omitted]
skills/sn-ppt-standard/scripts/deck.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-ppt-standard/scripts/export_pptx/html_to_pptx.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/sn-ppt-standard/scripts/export_pptx/lib/browser_picker.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/lib/cli_guards.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/lib/dom_extractor.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/lib/echarts_discovery.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/lib/echarts_to_pptx.mjs
- Executable scriptline 1
Executable file - Network accessline 682
// bar+line combo. pptxgenjs supports combo via addChart with an array of // { type, data, options } per series, but only at the slide level — see // https://github.com/gitbrent/PptxGenJS#combo-charts - Network accessline 683
// { type, data, options } per series, but only at the slide level — see // https://github.com/gitbrent/PptxGenJS#combo-charts // For now, fall back to whichever has more data points, with a warning. - Network accessline 684
// https://github.com/gitbrent/PptxGenJS#combo-charts
skills/sn-ppt-standard/scripts/export_pptx/lib/image_downloader.mjs
- Executable scriptline 1
Executable file - Network accessline 6
// Only match image URLs in IMAGE contexts: // <img ... src="https://..."> - Network accessline 7
// <img ... src="https://..."> - Network accessline 8
// style="... background-image: url(https://...)" - Network accessline 9
// style="... background: url(https://...)"
skills/sn-ppt-standard/scripts/export_pptx/lib/postprocess_pptx.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/lib/pptx_builder.mjs
- Executable scriptline 1
Executable file - Network accessline 458
return `data:image/svg+xml;base64,${Buffer.from(`<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}"> - Network accessline 505
const rx = borderRadius > 0 ? ` rx="${borderRadius}" ry="${borderRadius}"` : ''; const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}"><defs><linearGradient id="g" x1="${x1}%" y1="${y1}%" - Network accessline 506
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}"><defs><linearGradient id="g" x1="${x1}%" y1="${y1}%" x2="${x2}%" y2="${y2}%">${stops}</linearGradient></defs><rect width="${w}" height=" - Network accessline 525
const rx = borderRadius > 0 ? ` rx="${borderRadius}" ry="${borderRadius}"` : ''; const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}"><defs><radialGradient id="g" cx="${cx}%" cy="${cy}%" - Network accessline 526
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${w}" height="${h}" viewBox="0 0 ${w} ${h}"><defs><radialGradient id="g" cx="${cx}%" cy="${cy}%" r="${radius}%">${stops}</radialGradient></defs><rect width="${w}" height="${h}"${rx
skills/sn-ppt-standard/scripts/export_pptx/lib/style_parser.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/package-lock.json
- Network accessline 16
"node_modules/@types/node": { "version": "18.19.130", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", - Network accessline 17
"version": "18.19.130", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", - Network accessline 18
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", - Network accessline 25
"node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - Network accessline 26
"version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - Network accessline 27
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - Network accessline 31
"node_modules/echarts": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz", - Network accessline 32
"version": "5.6.0", "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz", "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", - Network accessline 33
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.6.0.tgz", - Network accessline 41
"node_modules/fsevents": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - Network accessline 42
"version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - Network accessline 43
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - Network accessline 55
"node_modules/https": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", - Network accessline 56
"version": "1.0.0", "resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", "integrity": "sha512-4EC57ddXrkaF0x83Oj8sM6SLQHAWXw90Skqu2M4AEWENZ3F02dFJE/GARA8igO79tcgYqGrD7ae4f5L3um2lgg==", - Network accessline 57
"resolved": "https://registry.npmjs.org/https/-/https-1.0.0.tgz", - Network accessline 61
"node_modules/image-size": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - Network accessline 62
"version": "1.2.1", "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", - Network accessline 63
"resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - Network accessline 76
"node_modules/immediate": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - Network accessline 77
"version": "3.0.6", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - Network accessline 78
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - Network accessline 82
"node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - Network accessline 83
"version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - Network accessline 84
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - Network accessline 88
"node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - Network accessline 89
"version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - Network accessline 90
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - Network accessline 94
"node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - Network accessline 95
"version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - Network accessline 96
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - Network accessline 106
"node_modules/lie": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - Network accessline 107
"version": "3.3.0", "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - Network accessline 108
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - Network accessline 115
"node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - Network accessline 116
"version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - Network accessline 117
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - Network accessline 121
"node_modules/playwright": { "version": "1.58.2", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", - Network accessline 122
"version": "1.58.2", "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", - Network accessline 123
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", - Network accessline 139
"node_modules/playwright-core": { "version": "1.58.2", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", - Network accessline 140
"version": "1.58.2", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", - Network accessline 141
"resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", - Network accessline 151
"node_modules/pptxgenjs": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/pptxgenjs/-/pptxgenjs-3.12.0.tgz", - Network accessline 152
"version": "3.12.0", "resolved": "https://registry.npmjs.org/pptxgenjs/-/pptxgenjs-3.12.0.tgz", "integrity": "sha512-ZozkYKWb1MoPR4ucw3/aFYlHkVIJxo9czikEclcUVnS4Iw/M+r+TEwdlB3fyAWO9JY1USxJDt0Y0/r15IR/RUA==", - Network accessline 153
"resolved": "https://registry.npmjs.org/pptxgenjs/-/pptxgenjs-3.12.0.tgz", - Network accessline 163
"node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - Network accessline 164
"version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - Network accessline 165
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - Network accessline 169
"node_modules/queue": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - Network accessline 170
"version": "6.0.2", "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", - Network accessline 171
"resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", - Network accessline 178
"node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - Network accessline 179
"version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - Network accessline 180
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - Network accessline 193
"node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - Network accessline 194
"version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - Network accessline 195
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - Network accessline 199
"node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - Network accessline 200
"version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - Network accessline 201
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - Network accessline 205
"node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - Network accessline 206
"version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - Network accessline 207
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - Network accessline 214
"node_modules/tslib": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - Network accessline 215
"version": "2.3.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", - Network accessline 216
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz", - Network accessline 220
"node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - Network accessline 221
"version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - Network accessline 222
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - Network accessline 226
"node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - Network accessline 227
"version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - Network accessline 228
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - Network accessline 232
"node_modules/zrender": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz", - Network accessline 233
"version": "5.6.1", "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz", "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", - Network accessline 234
"resolved": "https://registry.npmjs.org/zrender/-/zrender-5.6.1.tgz",
skills/sn-ppt-standard/scripts/export_pptx/package.json
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/screenshot.mjs
- Executable scriptline 1
#!/usr/bin/env node
skills/sn-ppt-standard/scripts/export_pptx/test/test_color_srgb_regression.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/test/test_dom_layout_regression.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/test/test_echarts_discovery.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/test/test_echarts_fallback.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/test/test_echarts_to_pptx_regression.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/test/test_radial_overlay_regression.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/export_pptx/test/test_text_box_padding_regression.mjs
- Executable scriptline 1
Executable file
skills/sn-ppt-standard/scripts/font_bundle.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 114
def _google_font_source(family: str) -> str: return f"https://github.com/google/fonts/tree/{GOOGLE_FONTS_REV}/ofl/{family}" - Network accessline 115
return f"https://github.com/google/fonts/tree/{GOOGLE_FONTS_REV}/ofl/{family}" - Network accessline 127
"Fraunces": {"license": "OFL-1.1", "source": _google_font_source("fraunces")}, "Spectral": {"license": "OFL-1.1", "source": _google_font_source("spectral")}, "Xiaolai": {"license": "OFL-1.1", "source": "https://github.com/lxgw/kose- - Network accessline 128
"Spectral": {"license": "OFL-1.1", "source": _google_font_source("spectral")}, "Xiaolai": {"license": "OFL-1.1", "source": "https://github.com/lxgw/kose-font/tree/v3.126"}, "LXGW WenKai": {"license": "OFL-1.1", "source": "https://gi - Network accessline 129
"Xiaolai": {"license": "OFL-1.1", "source": "https://github.com/lxgw/kose-font/tree/v3.126"}, - Network accessline 130
"LXGW WenKai": {"license": "OFL-1.1", "source": "https://github.com/lxgw/LxgwWenKai"}, - Network accessline 131
"Smiley Sans": {"license": "OFL-1.1", "source": "https://github.com/atelier-anchor/smiley-sans"}, - Access to secretsline 233
[Credential-related source omitted]
skills/sn-ppt-standard/scripts/image_cutout.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-ppt-standard/scripts/install.sh
- Executable scriptline 1
#!/usr/bin/env bash - Network accessline 96
done if [ "$PPT_FONT_DOWNLOADS" != "0" ]; then local base="https://raw.githubusercontent.com/google/fonts/$GOOGLE_FONTS_REV/ofl" - Network accessline 97
if [ "$PPT_FONT_DOWNLOADS" != "0" ]; then local base="https://raw.githubusercontent.com/google/fonts/$GOOGLE_FONTS_REV/ofl" local downloads=( - Network accessline 98
local base="https://raw.githubusercontent.com/google/fonts/$GOOGLE_FONTS_REV/ofl" - Network accessline 106
"Spectral-Regular.ttf|$base/spectral/Spectral-Regular.ttf" "Spectral-Bold.ttf|$base/spectral/Spectral-Bold.ttf" "Xiaolai-Regular.ttf|https://github.com/lxgw/kose-font/releases/download/v3.126/Xiaolai-Regular.ttf" - Network accessline 107
"Spectral-Bold.ttf|$base/spectral/Spectral-Bold.ttf" "Xiaolai-Regular.ttf|https://github.com/lxgw/kose-font/releases/download/v3.126/Xiaolai-Regular.ttf" "MaShanZheng-Regular.ttf|$base/mashanzheng/MaShanZheng-Regular.ttf" - Network accessline 108
"Xiaolai-Regular.ttf|https://github.com/lxgw/kose-font/releases/download/v3.126/Xiaolai-Regular.ttf" - Network accessline 139
"Syne.ttf|$base/syne/Syne%5Bwght%5D.ttf" "Sora.ttf|$base/sora/Sora%5Bwght%5D.ttf" "LXGWWenKai-Regular.ttf|https://github.com/lxgw/LxgwWenKai/releases/download/v1.522/LXGWWenKai-Regular.ttf" - Network accessline 140
"Sora.ttf|$base/sora/Sora%5Bwght%5D.ttf" "LXGWWenKai-Regular.ttf|https://github.com/lxgw/LxgwWenKai/releases/download/v1.522/LXGWWenKai-Regular.ttf" ) - Network accessline 141
"LXGWWenKai-Regular.ttf|https://github.com/lxgw/LxgwWenKai/releases/download/v1.522/LXGWWenKai-Regular.ttf" - Network accessline 146
[ -s "$FONTS_DIR/$name" ] && continue tmp="$FONTS_DIR/.${name}.download" if command -v curl >/dev/null 2>&1; then - Network accessline 147
tmp="$FONTS_DIR/.${name}.download" if command -v curl >/dev/null 2>&1; then curl -fsSL --retry 2 --connect-timeout 15 "$url" -o "$tmp" || { rm -f "$tmp"; log " ⚠<U+FE0F> 下载失败: $name"; continue; } - Network accessline 148
if command -v curl >/dev/null 2>&1; then - Dangerous shell operationline 149
curl -fsSL --retry 2 --connect-timeout 15 "$url" -o "$tmp" || { rm -f "$tmp"; log " ⚠<U+FE0F> 下载失败: $name"; continue; } - Network accessline 149
curl -fsSL --retry 2 --connect-timeout 15 "$url" -o "$tmp" || { rm -f "$tmp"; log " ⚠<U+FE0F> 下载失败: $name"; continue; } - Network accessline 150
elif command -v wget >/dev/null 2>&1; then - Dangerous shell operationline 151
wget -q --timeout=30 -O "$tmp" "$url" || { rm -f "$tmp"; log " ⚠<U+FE0F> 下载失败: $name"; continue; } - Network accessline 151
wget -q --timeout=30 -O "$tmp" "$url" || { rm -f "$tmp"; log " ⚠<U+FE0F> 下载失败: $name"; continue; }
skills/sn-ppt-standard/scripts/render.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 55
[Credential-related source omitted] - Access to secretsline 74
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 83
[Credential-related source omitted] - Access to secretsline 144
[Credential-related source omitted] - Access to secretsline 286
[Credential-related source omitted] - Access to secretsline 345
[Credential-related source omitted] - Access to secretsline 1093
[Credential-related source omitted] - Access to secretsline 1094
[Credential-related source omitted] - Access to secretsline 1100
[Credential-related source omitted] - Access to secretsline 1101
[Credential-related source omitted] - Access to secretsline 1148
[Credential-related source omitted] - Network accessline 1178
route.fulfill(body=open(cpath, "rb").read(), content_type=ct) return resp = route.fetch(timeout=15000) - Network accessline 1179
return resp = route.fetch(timeout=15000) body = resp.body() - Network accessline 1180
resp = route.fetch(timeout=15000)
skills/sn-ppt-standard/scripts/serper_images.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 19
SEARCH_ENDPOINT = "https://google.serper.dev/images" - Access to secretsline 24
[Credential-related source omitted] - Network accessline 25
if not key: raise SystemExit("SERPER_API_KEY is not configured") response = requests.post( - Network accessline 26
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Network accessline 27
response = requests.post( - Network accessline 61
"Accept": "image/avif,image/webp,image/apng,image/*,*/*;q=0.8", } response = requests.get(url, headers=headers, timeout=30, stream=True) - Network accessline 62
} response = requests.get(url, headers=headers, timeout=30, stream=True) response.raise_for_status() - Network accessline 63
response = requests.get(url, headers=headers, timeout=30, stream=True)
skills/sn-ppt-standard/scripts/stage_materials.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 60
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 68
[Credential-related source omitted] - Network accessline 105
import zipfile import xml.etree.ElementTree as ET namespace = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}" - Network accessline 106
import xml.etree.ElementTree as ET namespace = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}" with zipfile.ZipFile(path) as archive: - Network accessline 107
namespace = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}" - Access to secretsline 349
[Credential-related source omitted] - Access to secretsline 492
[Credential-related source omitted] - Access to secretsline 493
[Credential-related source omitted] - Access to secretsline 494
[Credential-related source omitted]
skills/sn-ppt-tools/SKILL.md
- Access to secretsline 38
[Credential-related source omitted] - Access to secretsline 39
[Credential-related source omitted] - Network accessline 46
python3 "$PPT_TOOLS_DIR/scripts/fetch_image.py" \ "https://example.com/image.png" \ - Network accessline 47
"https://example.com/image.png" \ - Network accessline 48
--deck-dir "$DECK_DIR" \ --output "assets/image.png" \ --referer "https://example.com/source-page" - Network accessline 50
--referer "https://example.com/source-page" - Access to secretsline 57
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 76
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted]
skills/sn-ppt-tools/scripts/env_config.py
- Executable scriptline 1
Executable file - Access to secretsline 30
[Credential-related source omitted] - Access to secretsline 33
[Credential-related source omitted] - Access to secretsline 34
[Credential-related source omitted] - Access to secretsline 35
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted]
skills/sn-ppt-tools/scripts/fetch_image.py
skills/sn-ppt-tools/scripts/image_generate.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 50
[Credential-related source omitted] - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 119
[Credential-related source omitted] - Access to secretsline 121
[Credential-related source omitted] - Access to secretsline 141
[Credential-related source omitted] - Access to secretsline 143
[Credential-related source omitted] - Access to secretsline 146
[Credential-related source omitted] - Possible obfuscationline 169
return base64.b64decode(encoded, validate=True) - Access to secretsline 187
[Credential-related source omitted] - Access to secretsline 221
[Credential-related source omitted]
skills/sn-ppt-tools/scripts/image_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 15
DEFAULT_BASE_URL = "https://google.serper.dev" - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted]
skills/sn-ppt-tools/scripts/web_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 15
DEFAULT_BASE_URL = "https://google.serper.dev" - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 47
[Credential-related source omitted] - Access to secretsline 97
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted]
skills/sn-ppt-workbench/SKILL.md
- Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 58
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 84
[Credential-related source omitted] - Access to secretsline 90
[Credential-related source omitted] - Network accessline 203
| `API_SERVER_KEY` | Gateway (.env) | Shared secret | | `WORKBENCH_GATEWAY_API_KEY` | Workbench env | Same as `API_SERVER_KEY`; preferred explicit bridge key | | `HERMES_GATEWAY_BASE_URL` | Workbench env | `http://127.0.0.1:8642` | - Network accessline 204
[Credential-related source omitted] - Access to secretsline 204
[Credential-related source omitted] - Network accessline 205
| `HERMES_GATEWAY_BASE_URL` | Workbench env | `http://127.0.0.1:8642` | - Access to secretsline 209
[Credential-related source omitted] - Network accessline 213
Quick steps: - Gateway: set `API_SERVER_KEY` in `.env`, restart gateway - Workbench: set `WORKBENCH_GATEWAY_API_KEY` to same value, set `HERMES_GATEWAY_BASE_URL=http://127.0.0.1:8642` - Network accessline 214
- Gateway: set `API_SERVER_KEY` in `.env`, restart gateway - Workbench: set `WORKBENCH_GATEWAY_API_KEY` to same value, set `HERMES_GATEWAY_BASE_URL=http://127.0.0.1:8642` - If no explicit bridge key is set, the Node relay falls back to `API - Network accessline 215
[Credential-related source omitted] - Access to secretsline 215
[Credential-related source omitted] - Access to secretsline 216
[Credential-related source omitted] - Network accessline 223
|---|---| | Before helper | `正在启动 PPT 预览工作台,不会重新生成幻灯片...` | | Success | `PPT 编辑工作台已启动:http://127.0.0.1:18087` | - Network accessline 224
| Before helper | `正在启动 PPT 预览工作台,不会重新生成幻灯片...` | | Success | `PPT 编辑工作台已启动:http://127.0.0.1:18087` | | Generation progress URL available | `生成进度工作台:http://127.0.0.1:18087/progress` | - Network accessline 225
| Success | `PPT 编辑工作台已启动:http://127.0.0.1:18087` | - Network accessline 226
| Generation progress URL available | `生成进度工作台:http://127.0.0.1:18087/progress` |
skills/sn-ppt-workbench/references/gateway-auth.md
- Access to secretsline 12
[Credential-related source omitted] - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 17
[Credential-related source omitted] - Access to secretsline 18
[Credential-related source omitted] - Network accessline 32
[Credential-related source omitted] - Network accessline 33
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 61
[Credential-related source omitted] - Access to secretsline 64
[Credential-related source omitted] - Access to secretsline 70
[Credential-related source omitted] - Network accessline 76
export HERMES_GATEWAY_BASE_URL="http://127.0.0.1:8642" - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 103
[Credential-related source omitted] - Access to secretsline 105
[Credential-related source omitted] - Access to secretsline 106
[Credential-related source omitted] - Access to secretsline 109
[Credential-related source omitted] - Access to secretsline 113
[Credential-related source omitted] - Network accessline 143
# Gateway API alive? curl http://127.0.0.1:8642/health - Network accessline 144
curl http://127.0.0.1:8642/health - Network accessline 146
# Gateway API with auth? curl http://127.0.0.1:8642/v1/models \ - Network accessline 147
curl http://127.0.0.1:8642/v1/models \ - Network accessline 150
# Chat completion test (validates end-to-end Hermes session routing): curl http://127.0.0.1:8642/v1/chat/completions \ - Network accessline 151
curl http://127.0.0.1:8642/v1/chat/completions \
skills/sn-ppt-workbench/scripts/open_workbench.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 123
[Credential-related source omitted] - Access to secretsline 198
[Credential-related source omitted] - Access to secretsline 205
[Credential-related source omitted] - Access to secretsline 207
[Credential-related source omitted] - Access to secretsline 209
[Credential-related source omitted] - Access to secretsline 210
[Credential-related source omitted] - Access to secretsline 234
[Credential-related source omitted] - Access to secretsline 235
[Credential-related source omitted] - Access to secretsline 236
[Credential-related source omitted] - Access to secretsline 240
[Credential-related source omitted] - Access to secretsline 246
[Credential-related source omitted] - Access to secretsline 247
[Credential-related source omitted] - Access to secretsline 249
[Credential-related source omitted] - Access to secretsline 250
[Credential-related source omitted] - Access to secretsline 260
[Credential-related source omitted] - Access to secretsline 262
[Credential-related source omitted] - Network accessline 265
request = urllib.request.Request( - Access to secretsline 267
[Credential-related source omitted] - Network accessline 269
) try: with urllib.request.urlopen(request, timeout=4) as response: - Network accessline 270
try: with urllib.request.urlopen(request, timeout=4) as response: body = response.read(10000).decode("utf-8", errors="replace") - Network accessline 271
with urllib.request.urlopen(request, timeout=4) as response: - Access to secretsline 278
[Credential-related source omitted] - Access to secretsline 281
[Credential-related source omitted] - Network accessline 284
for candidate in ("http://127.0.0.1:8642", "http://localhost:8642", "http://127.0.0.1:8643"): - Access to secretsline 285
[Credential-related source omitted] - Network accessline 314
codespace_domain = _clean_env("GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN") if codespace and codespace_domain: return f"https://{codespace}-{{port}}.{codespace_domain}" - Network accessline 316
return f"https://{codespace}-{{port}}.{codespace_domain}" - Network accessline 318
gitpod_url = _clean_env("GITPOD_WORKSPACE_URL") if gitpod_url: return f"https://{{port}}-{gitpod_url.removeprefix('https://').removeprefix('http://')}" - Network accessline 320
return f"https://{{port}}-{gitpod_url.removeprefix('https://').removeprefix('http://')}" - Access to secretsline 382
[Credential-related source omitted] - Access to secretsline 383
[Credential-related source omitted] - Access to secretsline 386
[Credential-related source omitted] - Access to secretsline 387
[Credential-related source omitted] - Access to secretsline 395
[Credential-related source omitted] - Access to secretsline 400
[Credential-related source omitted] - Access to secretsline 402
[Credential-related source omitted] - Access to secretsline 404
[Credential-related source omitted] - Access to secretsline 426
[Credential-related source omitted] - Access to secretsline 427
[Credential-related source omitted] - Access to secretsline 434
[Credential-related source omitted] - Access to secretsline 440
[Credential-related source omitted] - Access to secretsline 465
[Credential-related source omitted] - Access to secretsline 466
[Credential-related source omitted] - Access to secretsline 479
[Credential-related source omitted] - Access to secretsline 480
[Credential-related source omitted] - Access to secretsline 518
[Credential-related source omitted] - Access to secretsline 520
[Credential-related source omitted] - Access to secretsline 523
[Credential-related source omitted] - Access to secretsline 525
[Credential-related source omitted] - Access to secretsline 526
[Credential-related source omitted] - Access to secretsline 527
[Credential-related source omitted] - Access to secretsline 528
[Credential-related source omitted] - Access to secretsline 530
[Credential-related source omitted] - Access to secretsline 531
[Credential-related source omitted] - Access to secretsline 532
[Credential-related source omitted]
skills/sn-ppt-workbench/workbench-runtime/bin/sensenova-ppt-workbench.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 139
function buildLocalUrl(port, host) { const probeHost = host === '0.0.0.0' || host === '::' ? '127.0.0.1' : host return `http://${probeHost}:${port}` - Network accessline 140
const probeHost = host === '0.0.0.0' || host === '::' ? '127.0.0.1' : host return `http://${probeHost}:${port}` } - Network accessline 141
return `http://${probeHost}:${port}` - Network accessline 151
if (host === '0.0.0.0' || host === '::') { return `http://${getLanAddress()}:${port}` - Network accessline 152
return `http://${getLanAddress()}:${port}` - Network accessline 383
const timeout = setTimeout(() => controller.abort(), 1500) try { const response = await fetch(`${url.replace(/\/+$/, '')}/api/workbench/session`, { - Network accessline 384
try { const response = await fetch(`${url.replace(/\/+$/, '')}/api/workbench/session`, { signal: controller.signal, - Network accessline 385
const response = await fetch(`${url.replace(/\/+$/, '')}/api/workbench/session`, { - Access to secretsline 460
[Credential-related source omitted] - Access to secretsline 467
[Credential-related source omitted] - Access to secretsline 471
[Credential-related source omitted] - Access to secretsline 472
[Credential-related source omitted] - Access to secretsline 473
[Credential-related source omitted] - Access to secretsline 474
[Credential-related source omitted] - Access to secretsline 501
[Credential-related source omitted] - Access to secretsline 508
[Credential-related source omitted]
skills/sn-ppt-workbench/workbench-runtime/dist-server/index.mjs
- Executable scriptline 1
Executable file - Network accessline 429
} let m; return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 - Network accessline 430
let m; return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 typeof win - Network accessline 431
return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773 - Network accessline 433
// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages - Possible obfuscationline 2564
chars: "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260 - Possible obfuscationline 2578
chars: "\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635 - Possible obfuscationline 2772
"chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\x - Possible obfuscationline 2778
"chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\x - Possible obfuscationline 2784
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\x - Possible obfuscationline 2790
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\x - Possible obfuscationline 2796
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\x - Possible obfuscationline 2802
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8 - Possible obfuscationline 2808
"chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8 - Possible obfuscationline 2814
"chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9 - Possible obfuscationline 2820
"chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\x - Possible obfuscationline 2826
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\x - Possible obfuscationline 2831
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB - Possible obfuscationline 2836
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3 - Possible obfuscationline 2841
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u - Possible obfuscationline 2846
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u04 - Possible obfuscationline 2851
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD - Possible obfuscationline 2856
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u - Possible obfuscationline 2861
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8 - Possible obfuscationline 2866
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\x - Possible obfuscationline 2871
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u - Possible obfuscationline 2876
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u - Possible obfuscationline 2881
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\x - Possible obfuscationline 2886
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120 - Possible obfuscationline 2891
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\x - Possible obfuscationline 2896
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u - Possible obfuscationline 2901
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u - Possible obfuscationline 2913
"chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB - Possible obfuscationline 2919
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\x - Possible obfuscationline 2925
"chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C - Possible obfuscationline 2937
"chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD - Possible obfuscationline 2943
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u - Possible obfuscationline 2949
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\x - Possible obfuscationline 2955
"chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561 - Possible obfuscationline 2961
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u - Possible obfuscationline 2967
"chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\x - Possible obfuscationline 2973
"chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u - Possible obfuscationline 2982
!\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xB - Possible obfuscationline 2988
"chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u - Possible obfuscationline 3006
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8 - Possible obfuscationline 3018
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u04 - Possible obfuscationline 3030
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u - Possible obfuscationline 3036
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u - Possible obfuscationline 3042
"chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u - Possible obfuscationline 3048
"chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u - Possible obfuscationline 3054
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7 - Possible obfuscationline 3060
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u22 - Possible obfuscationline 3064
"chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406 - Possible obfuscationline 3068
"chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391 - Possible obfuscationline 3072
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u - Possible obfuscationline 3076
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5 - Possible obfuscationline 3080
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5 - Possible obfuscationline 3088
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5 - Possible obfuscationline 3096
"chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556 - Possible obfuscationline 3100
"chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457 - Possible obfuscationline 3104
"chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457 - Possible obfuscationline 3108
"chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6 - Possible obfuscationline 3112
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\ - Possible obfuscationline 3116
"chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\x - Possible obfuscationline 3127
"chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\x - Possible obfuscationline 3131
"chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\x - Possible obfuscationline 3141
\u1EF4<U+001F> !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA - Possible obfuscationline 3159
"chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\x - Possible obfuscationline 3163
"chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5 - Possible obfuscationline 3870
["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], - Possible obfuscationline 3885
["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], - Possible obfuscationline 3886
["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9 - Possible obfuscationline 3887
["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], - Possible obfuscationline 3888
["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], - Possible obfuscationline 3889
["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u - Network accessline 4917
// After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. // // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - Network accessline 4919
// Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html - Network accessline 4947
// TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. // == Chinese/GBK ========================================================== // http://en.wikipedia.org/wiki/GBK - Network accessline 4948
// == Chinese/GBK ========================================================== // http://en.wikipedia.org/wiki/GBK // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - Network accessline 4949
// http://en.wikipedia.org/wiki/GBK - Network accessline 4950
// We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder - Network accessline 4977
// GB18030 is an algorithmic extension of GBK. // Main source: https://www.w3.org/TR/encoding/#gbk-encoder - Network accessline 4978
// Main source: https://www.w3.org/TR/encoding/#gbk-encoder - Network accessline 4979
// http://icu-project.org/docs/papers/gb18030.html - Network accessline 4980
// http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml - Network accessline 4981
// http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 - Network accessline 5013
// == Big5/Taiwan/Hong Kong ================================================ // There are lots of tables for Big5 and cp950. Please see the following links for history: // http://moztw.org/docs/big5/ http://www.haible.de/bruno/ - Network accessline 5014
// There are lots of tables for Big5 and cp950. Please see the following links for history: // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html // Variations, in roughly number of defi - Network accessline 5015
// http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html - Network accessline 5016
// Variations, in roughly number of defined chars: // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT // * Windows CP 951: Microsoft variant of Bi - Network accessline 5017
// * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT - Network accessline 5018
// * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ - Network accessline 5022
// many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. // Plus, it has 4 combining sequences. // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/sho - Network accessline 5023
// Plus, it has 4 combining sequences. // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 // because big5-hksc - Network accessline 5024
// Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 - Network accessline 5026
// Implementations are not consistent within browsers; sometimes labeled as just big5. // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. // Great discussion & recap of what's going on https: - Network accessline 5027
// MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 // In the encoder, it might make sens - Network accessline 5028
// Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 - Network accessline 5029
// In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt // htt - Network accessline 5030
// Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt - Network accessline 5031
// http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt - Network accessline 5032
// // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) - Network accessline 5033
// Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder - Network accessline 5034
// Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. - Network accessline 5052
// Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. - Network accessline 5053
// https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU. - Network accessline 5116
// Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345 - Network accessline 5272
if (typeof buf === "string") { if (!module.exports.skipDecodeWarning) { console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decodin - Network accessline 5273
if (!module.exports.skipDecodeWarning) { console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); module.exports.skipDecod - Network accessline 5274
console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); - Network accessline 5379
} if (false) { console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); - Network accessline 5380
if (false) { console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); } - Network accessline 5381
console.error("iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.");
skills/sn-ppt-workbench/workbench-runtime/dist/assets/MarkdownArtifactViewer-DxLTmGwT.js
- Possible obfuscationline 1
import{a as e,c as t,d as n,f as r,h as i,i as a,l as o,m as s,n as c,o as l,p as u,r as d,s as f,t as p,u as m}from"./index-DZ8oHsQz.js";var h=i(u(),1),g={};function _(e){let t=g[e];if(t)return t;t=g[e]=[];for(let e=0;e<128;e++){let n=Stri - Executable scriptline 1
Executable file - Possible obfuscationline 2
`,` `],T=[`/`,`?`,`#`],E=255,D=/^[+a-z0-9A-Z_-]{0,63}$/,re=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,O={javascript:!0,"javascript:":!0},ie={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function k( - Possible obfuscationline 11
`:`>`,i},z.prototype.renderInline=function(e,t,n){let r=``,i=this.rules;for(let a=0,o=e.length;a<o;a++){let o=e[a].type;i[o]===void 0?r+=this.renderToken(e,a,t):r+=i[o](e,a,t,n,this)}return r},z.prototype.renderInlineAsText=function(e,t,n){ - Possible obfuscationline 12
[Credential-related source omitted] - Network accessline 13
[Credential-related source omitted] - Possible obfuscationline 13
[Credential-related source omitted] - Possible obfuscationline 14
[Credential-related source omitted]
skills/sn-ppt-workbench/workbench-runtime/dist/assets/index-DZ8oHsQz.js
- Network accessline 1
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)= - Possible obfuscationline 1
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)= - Executable scriptline 1
Executable file - Possible obfuscationline 2
at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return `+de+e+V}var pe=!1;function me(e,t){if(!e||pe)return``;pe=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function - Possible obfuscationline 8
[Credential-related source omitted] - Network accessline 9
`).replace(kd,``)}function jd(e,t){return t=Ad(t),Ad(e)===t}function Md(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Bt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Bt(e,``+r);br - Possible obfuscationline 9
`).replace(kd,``)}function jd(e,t){return t=Ad(t),Ad(e)===t}function Md(e,t,n,r,a,o){switch(n){case`children`:typeof r==`string`?t===`body`||t===`textarea`&&r===``||Bt(e,r):(typeof r==`number`||typeof r==`bigint`)&&t!==`body`&&Bt(e,``+r);br - Possible obfuscationline 11
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=et(),d;if(t){let e=typeof t==`string`?N(t):t;O(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \ - Network accessline 12
`, `).split( `))!n||n.startsWith(`:`)||n.startsWith(`event:`)||n.startsWith(`data:`)&&t.push(n.slice(5).trimStart());return t.length?JSON.parse(t.join( `)):null}async function bi(e,t,n){let r=await fetch(`/api/chat/send/stream`,{method:`POS - Network accessline 13
`).split(` `))!n||n.startsWith(`:`)||n.startsWith(`event:`)||n.startsWith(`data:`)&&t.push(n.slice(5).trimStart());return t.length?JSON.parse(t.join(` `)):null}async function bi(e,t,n){let r=await fetch(`/api/chat/send/stream`,{method:`POST - Network accessline 15
`)):null}async function bi(e,t,n){let r=await fetch(`/api/chat/send/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({message:e,context:t})});if(!r.ok){let e=await r.json().catch(()=>null);throw Error(e - Network accessline 21
`),c()}o+=a.decode().replaceAll(`\r `,` `),c();let l=yi(o);if(l&&(n(l),l.type===`error`&&(s=l.error)),s)throw Error(s)}async function xi(e,t){let n=await fetch(`/api/workbench/audit/stream`,{method:`POST`,headers:{"Content-Type":`applicatio - Network accessline 22
`, `),c();let l=yi(o);if(l&&(n(l),l.type===`error`&&(s=l.error)),s)throw Error(s)}async function xi(e,t){let n=await fetch(`/api/workbench/audit/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:e - Network accessline 23
`),c();let l=yi(o);if(l&&(n(l),l.type===`error`&&(s=l.error)),s)throw Error(s)}async function xi(e,t){let n=await fetch(`/api/workbench/audit/stream`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({force:e})} - Network accessline 29
`),s()}a+=i.decode().replaceAll(`\r `,` `),s();let c=yi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function Si(){return ai(`/api/ai/health`)}function Ci(){return ai(`/api/agents/health`)}function wi(e){return ai(`/api/sl - Network accessline 30
`, `),s();let c=yi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function Si(){return ai(`/api/ai/health`)}function Ci(){return ai(`/api/agents/health`)}function wi(e){return ai(`/api/slides/inspect`,{method:`POST`,body:JSO - Possible obfuscationline 30
`, `),s();let c=yi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function Si(){return ai(`/api/ai/health`)}function Ci(){return ai(`/api/agents/health`)}function wi(e){return ai(`/api/slides/inspect`,{method:`POST`,body:JSO - Network accessline 31
`),s();let c=yi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function Si(){return ai(`/api/ai/health`)}function Ci(){return ai(`/api/agents/health`)}function wi(e){return ai(`/api/slides/inspect`,{method:`POST`,body:JSON.s - Possible obfuscationline 31
`),s();let c=yi(a);if(c&&(t(c),c.type===`error`&&(o=c.error)),o)throw Error(o)}function Si(){return ai(`/api/ai/health`)}function Ci(){return ai(`/api/agents/health`)}function wi(e){return ai(`/api/slides/inspect`,{method:`POST`,body:JSON.s - Possible obfuscationline 32
`,r),o=t===-1?e.length:t;n.push(`<span class="code-token-comment">${So(e.slice(r,o))}</span>`),r=o,i=r;continue}if((t===`script`||t===`css`)&&o===`/`&&s===`*`){a(r);let t=e.indexOf(`*/`,r+2),o=t===-1?e.length:t+2;n.push(`<span class="code-t - Possible obfuscationline 34
`)}function Do(e,t){let n=xo(t);return n===`markup`?To(e):n===`table`?Eo(e,t):n===`script`||n===`css`||n===`yaml`||n===`toml`||n===`ini`?wo(e,n):So(e)}function Oo(e){let t=e.lastIndexOf(`/`);return t>=0?e.slice(0,t+1):e}function ko(e,t){if( - Possible obfuscationline 35
`),a.isConnected||n.head?.append(a),Ys(n),t.pauseAnimations&&`getAnimations`in i&&i.getAnimations({subtree:!0}).forEach(ec)}function nc(e){let t=e.contentDocument,n=t?.documentElement;if(!t||!n)return;let r=Xs.get(t);r?.forEach((e,t)=>{e.or - Possible obfuscationline 36
`)}let Lt=It();async function Rt(){if(Lt)try{await hu(Lt),ae(n(`prompt.manualAgentPromptCopied`,{provider:H}))}catch{ae(n(`prompt.manualAgentPromptCopyFailed`))}}function zt(e){let t=e.pageNos?.length?`\n\n涉及页面:${e.pageNos.map(e=>`第 ${e} 页`
skills/sn-ppt-workbench/workbench-runtime/dist/assets/index-Hn-wCKPf.css
- Network accessline 1
@import "https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,320;14..32,330;14..32,340;14..32,480;14..32,540;14..32,700&family=JetBrains+Mono:wght@400&display=swap";:root{--ink:#000;--canvas:#fff;--inverse-canvas:#000;--inverse-
skills/sn-ppt-workbench/workbench-runtime/dist/favicon.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="46" fill="none" viewBox="0 0 48 46"><path fill="#863bff" d="M25.946 44.938c-.664.845-2.021.375-2.021-.698V33.937a2.26 2.26 0 0 0-2.262-2.262H10.287c-.92 0-1.456-1.04-.92-1.788l7.48-
skills/sn-ppt-workbench/workbench-runtime/examples/sensenova-basic/assets/echarts.min.js
- Executable scriptline 1
Executable file - Network accessline 9
* with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 - Network accessline 10
* * http://www.apache.org/licenses/LICENSE-2.0 * - Network accessline 11
* http://www.apache.org/licenses/LICENSE-2.0 - Possible obfuscationline 35
***************************************************************************** */var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype. - Network accessline 41
* * LICENSE * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt - Network accessline 42
* LICENSE * https://github.com/ecomfe/zrender/blob/master/LICENSE.txt */ - Network accessline 43
* https://github.com/ecomfe/zrender/blob/master/LICENSE.txt - Possible obfuscationline 45
var Fr={},Gr={};var Wr,Hr=function(){function t(t,e,n){var i=this;this._sleepAfterStill=10,this._stillFrameAccum=0,this._needsRefresh=!0,this._needsRefreshHover=!0,this._darkMode=!1,n=n||{},this.dom=e,this.id=t;var o=new rn,a=n.renderer||"c
skills/sn-ppt-workbench/workbench-runtime/examples/sensenova-basic/pages/page_001.html
- Network accessline 5
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>OpenClaw 产品介绍</title> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;600;700;800 - Network accessline 6
<title>OpenClaw 产品介绍</title> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;600;700;800&display=swap" rel="stylesheet"> <style> - Network accessline 7
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
skills/sn-ppt-workbench/workbench-runtime/examples/sensenova-basic/pages/page_002.html
- Network accessline 5
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>核心功能 — 开放、灵活、智能</title> <link rel="preconnect" href="https://fonts.googleapis.com"> - Network accessline 6
<title>核心功能 — 开放、灵活、智能</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> - Network accessline 7
<link rel="preconnect" href="https://fonts.googleapis.com"> - Network accessline 8
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> - Network accessline 9
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Sans+SC:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
skills/sn-ppt-workbench/workbench-runtime/examples/sensenova-basic/pages/page_003.html
- Network accessline 5
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>应用场景 · OpenClaw</title> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@500;600;700;800&family=Noto+Sans+SC:wght@400;500;600;700;900&famil - Network accessline 6
<title>应用场景 · OpenClaw</title> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@500;600;700;800&family=Noto+Sans+SC:wght@400;500;600;700;900&family=Roboto:wght@400;500&display=swap" rel="stylesheet"> <style> - Network accessline 7
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@500;600;700;800&family=Noto+Sans+SC:wght@400;500;600;700;900&family=Roboto:wght@400;500&display=swap" rel="stylesheet">
skills/sn-ppt-workbench/workbench-runtime/examples/sensenova-basic/pages/page_004.html
- Network accessline 6
<title>立即体验 OpenClaw</title> <style> @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700&display=swap'); - Network accessline 8
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700&display=swap');
skills/sn-ppt-workbench/workbench-runtime/package.json
- Executable scriptline 1
Executable file
skills/sn-prepare-citations/scripts/prepare_citations.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-proactive-agent/references/connectors/hermes.md
skills/sn-proactive-agent/references/connectors/openclaw.md
- Network accessline 37
openclaw plugins enable sn-proactive-agent openclaw config set plugins.entries.sn-proactive-agent.hooks.allowConversationAccess true openclaw config set plugins.entries.sn-proactive-agent.config.serviceUrl http://127.0.0.1:8080 - Network accessline 39
openclaw config set plugins.entries.sn-proactive-agent.config.serviceUrl http://127.0.0.1:8080 - Network accessline 59
sn-proactive-agent serve --web-only --openclaw-gateway-url http://127.0.0.1:18789 - Network accessline 66
打开 <http://127.0.0.1:8080/>,在“设置”中启用 OpenClaw;只监听 OpenClaw 时可关闭 Hermes。
skills/sn-proactive-agent/references/install/macos.md
- Network accessline 22
若用户已安装 Homebrew,并授权补装 pipx,可按 [pipx 官方说明](https://pipx.pypa.io/stable/how-to/install-pipx.html)执行: - Network accessline 29
如果没有 Homebrew,不顺带安装新的包管理器;先与用户确认依赖安装方式。 `pipx ensurepath` 可能修改 Shell 配置。重新打开终端,或者在 pipx 已可运行时, 按 [pipx 路径说明](https://pipx.pypa.io/latest/how-to/configure-paths.html)使应用命令目录对当前终端生效: - Network accessline 31
按 [pipx 路径说明](https://pipx.pypa.io/latest/how-to/configure-paths.html)使应用命令目录对当前终端生效: - Network accessline 83
export SN_PROACTIVE_AGENT_SERVICE_URL="http://127.0.0.1:8080" - Network accessline 89
open http://127.0.0.1:8080/
skills/sn-proactive-agent/references/install/overview.md
- Network accessline 13
目标运行包版本为 `0.1.4`,支持 Hermes 和 OpenClaw;从 [GitHub Releases](https://github.com/OpenSenseNova/SenseNova-Skills-ProactiveAgent/releases) 下载并校验指定版本。 - Network accessline 14
[GitHub Releases](https://github.com/OpenSenseNova/SenseNova-Skills-ProactiveAgent/releases) 下载并校验指定版本。 - Network accessline 108
sn-proactive-agent serve --web-only --openclaw-gateway-url http://127.0.0.1:18789 - Network accessline 117
sn-proactive-agent doctor --url http://127.0.0.1:8080 --json - Network accessline 120
然后打开 <http://127.0.0.1:8080/>。如果使用了自定义端口或数据目录,检查、浏览器和 - Network accessline 149
`--version` 和 `doctor` 输出,再按 Connector 说明刷新已复制的资源、重启并复验。 只更新 pipx 包不会刷新已复制到 Harness 的 Hook、插件或已构建的续跑桥。 `--python` 与 `--force` 的参数含义见 [pipx 官方参考](https://pipx.pypa.io/stable/reference/cli.html)。 - Network accessline 151
`--python` 与 `--force` 的参数含义见 [pipx 官方参考](https://pipx.pypa.io/stable/reference/cli.html)。
skills/sn-proactive-agent/references/install/windows.md
- Network accessline 29
确认 Python 满足 3.11 或更高要求。若使用该解释器并获准补装 pipx, 按 [pipx 官方安装说明](https://pipx.pypa.io/stable/how-to/install-pipx.html)安装,并通过其模块入口处理 PATH: - Network accessline 30
按 [pipx 官方安装说明](https://pipx.pypa.io/stable/how-to/install-pipx.html)安装,并通过其模块入口处理 PATH: - Network accessline 37
重新打开 PowerShell 后检查 `pipx --version`。若 pipx 本身已可运行、但找不到它安装的应用, 可以按 [pipx 路径说明](https://pipx.pypa.io/latest/how-to/configure-paths.html)更新当前终端的应用搜索路径: - Network accessline 38
可以按 [pipx 路径说明](https://pipx.pypa.io/latest/how-to/configure-paths.html)更新当前终端的应用搜索路径: - Network accessline 82
$env:SN_PROACTIVE_AGENT_SERVICE_URL = "http://127.0.0.1:8080" - Network accessline 88
Start-Process "http://127.0.0.1:8080/" - Network accessline 107
缺少 pipx 时,按 [pipx 官方 Linux 说明](https://pipx.pypa.io/stable/how-to/install-pipx.html)
skills/sn-search-academic/SKILL.md
skills/sn-search-academic/references/refTree.md
skills/sn-search-academic/references/search.md
skills/sn-search-academic/scripts/arxiv_crawler_search.py
skills/sn-search-academic/scripts/arxiv_mirror_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 19
BASE_URL = "https://papers.cool" - Network accessline 20
ARXIV_BASE = "https://arxiv.org" - Network accessline 143
def _abs_url(paper, arxiv_id: str) -> str: link = paper.select_one('h2.title a[href^="https://arxiv.org/abs/"]') - Network accessline 144
link = paper.select_one('h2.title a[href^="https://arxiv.org/abs/"]')
skills/sn-search-academic/scripts/arxiv_paper.py
skills/sn-search-academic/scripts/arxiv_pdf_paper.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 5
直接下载 https://arxiv.org/pdf/<arxiv_id>,抽取整篇 PDF 文本并输出 JSON。 - Network accessline 7
用法: python3 arxiv_pdf_paper.py 2309.16609 python3 arxiv_pdf_paper.py https://arxiv.org/pdf/2309.16609 - Network accessline 8
python3 arxiv_pdf_paper.py 2309.16609 python3 arxiv_pdf_paper.py https://arxiv.org/pdf/2309.16609 """ - Network accessline 9
python3 arxiv_pdf_paper.py https://arxiv.org/pdf/2309.16609 - Network accessline 26
ABS_BASE = "https://arxiv.org/abs" - Network accessline 27
PDF_BASE = "https://arxiv.org/pdf" - Network accessline 160
示例: python3 scripts/arxiv_pdf_paper.py 2309.16609 python3 scripts/arxiv_pdf_paper.py https://arxiv.org/pdf/2309.16609 - Network accessline 161
python3 scripts/arxiv_pdf_paper.py 2309.16609 python3 scripts/arxiv_pdf_paper.py https://arxiv.org/pdf/2309.16609 """, - Network accessline 162
python3 scripts/arxiv_pdf_paper.py https://arxiv.org/pdf/2309.16609
skills/sn-search-academic/scripts/arxiv_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 92
"updated": _isoformat_or_none(getattr(paper, "updated", None)), "pdf_url": getattr(paper, "pdf_url", None), "html_url": f"https://arxiv.org/html/{arxiv_id}" if arxiv_id else None, - Network accessline 93
"pdf_url": getattr(paper, "pdf_url", None), "html_url": f"https://arxiv.org/html/{arxiv_id}" if arxiv_id else None, "categories": getattr(paper, "categories", []), - Network accessline 94
"html_url": f"https://arxiv.org/html/{arxiv_id}" if arxiv_id else None,
skills/sn-search-academic/scripts/crossref_search.py
skills/sn-search-academic/scripts/deepxiv_paper.py
skills/sn-search-academic/scripts/deepxiv_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 91
[Credential-related source omitted] - Access to secretsline 96
[Credential-related source omitted] - Network accessline 176
return None if source == "arxiv": return f"https://arxiv.org/abs/{paper_id}" - Network accessline 177
if source == "arxiv": return f"https://arxiv.org/abs/{paper_id}" if paper_id.startswith("10."): - Network accessline 178
return f"https://arxiv.org/abs/{paper_id}" - Network accessline 179
if paper_id.startswith("10."): return f"https://doi.org/{paper_id}" return None - Network accessline 180
return f"https://doi.org/{paper_id}"
skills/sn-search-academic/scripts/google_scholar_search.py
skills/sn-search-academic/scripts/openalex_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 12
API_URL = "https://api.openalex.org/works" - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Access to secretsline 66
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 79
[Credential-related source omitted] - Access to secretsline 81
[Credential-related source omitted] - Network accessline 161
if not value: return None return value.removeprefix("https://doi.org/").removeprefix("http://doi.org/") - Network accessline 163
return value.removeprefix("https://doi.org/").removeprefix("http://doi.org/") - Access to secretsline 184
[Credential-related source omitted]
skills/sn-search-academic/scripts/paper.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 176
"pmid": pmid or None, "title": title or None, "pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/", - Network accessline 177
"title": title or None, "pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/", "content": content, - Network accessline 178
"pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/",
skills/sn-search-academic/scripts/pmc_paper.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 26
EFETCH_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi" - Network accessline 27
ELINK_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/elink.fcgi" - Access to secretsline 36
[Credential-related source omitted] - Access to secretsline 44
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 63
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 72
[Credential-related source omitted] - Access to secretsline 323
[Credential-related source omitted] - Access to secretsline 325
[Credential-related source omitted] - Network accessline 335
"pmid": pmid or None, "title": title, "pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/", - Network accessline 336
"title": title, "pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/", "section_count": len(_flatten_sections(sections)), - Network accessline 337
"pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/", - Access to secretsline 344
[Credential-related source omitted] - Access to secretsline 346
[Credential-related source omitted] - Network accessline 373
"success": True, "pmc_id": f"PMC{pmc_num}", "pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/", - Network accessline 374
"pmc_id": f"PMC{pmc_num}", "pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/", "section": matched["name"], - Network accessline 375
"pmc_url": f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_num}/", - Access to secretsline 419
[Credential-related source omitted] - Access to secretsline 424
[Credential-related source omitted] - Access to secretsline 438
[Credential-related source omitted] - Access to secretsline 440
[Credential-related source omitted]
skills/sn-search-academic/scripts/pubmed_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
ESEARCH_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi" - Network accessline 11
EFETCH_URL = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi" - Access to secretsline 14
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Network accessline 127
url = f"https://pubmed.ncbi.nlm.nih.gov/{pmid}/" - Network accessline 128
pmc_url = f"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC{pmc_id}/" if pmc_id else None - Access to secretsline 157
[Credential-related source omitted]
skills/sn-search-academic/scripts/refTree.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 59
[Credential-related source omitted] - Access to secretsline 76
[Credential-related source omitted] - Access to secretsline 114
[Credential-related source omitted] - Access to secretsline 122
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Access to secretsline 155
[Credential-related source omitted] - Access to secretsline 164
[Credential-related source omitted] - Access to secretsline 173
[Credential-related source omitted] - Access to secretsline 183
[Credential-related source omitted] - Access to secretsline 201
[Credential-related source omitted] - Access to secretsline 218
[Credential-related source omitted] - Access to secretsline 226
[Credential-related source omitted] - Access to secretsline 246
[Credential-related source omitted] - Access to secretsline 259
[Credential-related source omitted] - Access to secretsline 281
[Credential-related source omitted] - Access to secretsline 291
[Credential-related source omitted] - Access to secretsline 305
[Credential-related source omitted] - Access to secretsline 308
[Credential-related source omitted] - Access to secretsline 314
[Credential-related source omitted] - Access to secretsline 341
[Credential-related source omitted] - Access to secretsline 354
[Credential-related source omitted] - Network accessline 527
return text.rstrip("/") if field == "doi": return text.removeprefix("https://doi.org/").removeprefix("http://doi.org/").removeprefix("doi:") - Network accessline 528
if field == "doi": return text.removeprefix("https://doi.org/").removeprefix("http://doi.org/").removeprefix("doi:") if field == "arxiv_id": - Network accessline 529
return text.removeprefix("https://doi.org/").removeprefix("http://doi.org/").removeprefix("doi:") - Access to secretsline 789
[Credential-related source omitted]
skills/sn-search-academic/scripts/search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 398
return re.sub(r"v\d+$", "", text) if field == "doi": return text.removeprefix("https://doi.org/").removeprefix("http://doi.org/") - Network accessline 399
if field == "doi": return text.removeprefix("https://doi.org/").removeprefix("http://doi.org/") if field == "title": - Network accessline 400
return text.removeprefix("https://doi.org/").removeprefix("http://doi.org/")
skills/sn-search-academic/scripts/search_utils.py
- Executable scriptline 1
Executable file - Network accessline 105
if headers: default_headers.update(headers) return httpx.Client( - Network accessline 106
default_headers.update(headers) return httpx.Client( timeout=timeout, - Network accessline 107
return httpx.Client( - Access to secretsline 123
[Credential-related source omitted]
skills/sn-search-academic/scripts/semantic_scholar_crawler_refTree.py
skills/sn-search-academic/scripts/semantic_scholar_crawler_search.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/sn-search-academic/scripts/semantic_scholar_refTree.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 18
API_BASE = "https://api.semanticscholar.org/graph/v1/paper" - Network accessline 73
- ArXiv ID: 2301.07041 → ARXIV:2301.07041 - PubMed ID: PMID:12345678 - URL: https://www.semanticscholar.org/paper/... → 提取 ID - Network accessline 74
- PubMed ID: PMID:12345678 - URL: https://www.semanticscholar.org/paper/... → 提取 ID """ - Network accessline 75
- URL: https://www.semanticscholar.org/paper/... → 提取 ID - Network accessline 157
external_ids = _external_ids(paper) s2_id = _value(paper, "paperId") or "" url = _value(paper, "url") or (f"https://www.semanticscholar.org/paper/{s2_id}" if s2_id else "") - Network accessline 158
s2_id = _value(paper, "paperId") or "" url = _value(paper, "url") or (f"https://www.semanticscholar.org/paper/{s2_id}" if s2_id else "") contexts = _value(entry, "contexts") or [] - Network accessline 159
url = _value(paper, "url") or (f"https://www.semanticscholar.org/paper/{s2_id}" if s2_id else "") - Access to secretsline 213
[Credential-related source omitted] - Access to secretsline 216
[Credential-related source omitted] - Access to secretsline 217
[Credential-related source omitted] - Access to secretsline 235
[Credential-related source omitted] - Access to secretsline 238
[Credential-related source omitted] - Access to secretsline 280
[Credential-related source omitted] - Access to secretsline 291
[Credential-related source omitted] - Access to secretsline 301
[Credential-related source omitted] - Access to secretsline 312
[Credential-related source omitted] - Access to secretsline 319
[Credential-related source omitted] - Access to secretsline 320
[Credential-related source omitted] - Network accessline 380
url = f"https://www.semanticscholar.org/paper/{s2_id}" if s2_id else "" - Access to secretsline 466
[Credential-related source omitted]
skills/sn-search-academic/scripts/semantic_scholar_refs.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
API_BASE = "https://api.semanticscholar.org/graph/v1/paper" - Network accessline 30
- ArXiv ID: 2301.07041 → ARXIV:2301.07041 - PubMed ID: PMID:12345678 - URL: https://www.semanticscholar.org/paper/... → 提取 ID - Network accessline 31
- PubMed ID: PMID:12345678 - URL: https://www.semanticscholar.org/paper/... → 提取 ID """ - Network accessline 32
- URL: https://www.semanticscholar.org/paper/... → 提取 ID - Access to secretsline 70
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Network accessline 136
url = f"https://www.semanticscholar.org/paper/{s2_id}" if s2_id else "" - Access to secretsline 222
[Credential-related source omitted]
skills/sn-search-academic/scripts/semantic_scholar_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 17
API_URL = "https://api.semanticscholar.org/graph/v1/paper/search" - Network accessline 121
paper_id = _value(paper, "paperId") or fallback_paper_id url = _value(paper, "url") or (f"https://www.semanticscholar.org/paper/{paper_id}" if paper_id else "") - Network accessline 122
url = _value(paper, "url") or (f"https://www.semanticscholar.org/paper/{paper_id}" if paper_id else "") - Access to secretsline 154
[Credential-related source omitted] - Access to secretsline 157
[Credential-related source omitted] - Access to secretsline 158
[Credential-related source omitted] - Access to secretsline 162
[Credential-related source omitted] - Access to secretsline 163
[Credential-related source omitted] - Access to secretsline 176
[Credential-related source omitted] - Access to secretsline 178
[Credential-related source omitted] - Access to secretsline 179
[Credential-related source omitted] - Access to secretsline 198
[Credential-related source omitted] - Access to secretsline 201
[Credential-related source omitted] - Access to secretsline 203
[Credential-related source omitted] - Access to secretsline 212
[Credential-related source omitted]
skills/sn-search-academic/scripts/ssrn_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 19
CROSSREF_BASE = "https://api.crossref.org/works" - Network accessline 35
url = f"{CROSSREF_BASE}?{urllib.parse.urlencode(params)}" req = urllib.request.Request( - Network accessline 36
req = urllib.request.Request( - Network accessline 44
try: with urllib.request.urlopen(req, timeout=30) as resp: - Network accessline 45
with urllib.request.urlopen(req, timeout=30) as resp: - Network accessline 75
"title": (item.get("title", [""]))[0], "doi": doi, "url": f"https://doi.org/{doi}" if doi else "", - Network accessline 76
"doi": doi, "url": f"https://doi.org/{doi}" if doi else "", "authors": [f"{a.get('given','')} {a.get('family','')}".strip() - Network accessline 77
"url": f"https://doi.org/{doi}" if doi else "",
skills/sn-search-academic/scripts/wikipedia_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 9
WIKIPEDIA_USER_AGENT = ( "sensenova-claw sn-search-academic " "(https://github.com/SenseTime-FVG/sensenova-claw)" - Network accessline 10
"sensenova-claw sn-search-academic " "(https://github.com/SenseTime-FVG/sensenova-claw)" ) - Network accessline 11
"(https://github.com/SenseTime-FVG/sensenova-claw)" - Network accessline 15
def _api_url(lang: str) -> str: return f"https://{lang}.wikipedia.org/w/api.php" - Network accessline 16
return f"https://{lang}.wikipedia.org/w/api.php" - Network accessline 40
snippet = _strip_html(result.get("snippet", "")) page_id = result.get("pageid", "") url = f"https://{lang}.wikipedia.org/wiki/{title.replace(' ', '_')}" - Network accessline 42
url = f"https://{lang}.wikipedia.org/wiki/{title.replace(' ', '_')}"
skills/sn-search-code/SKILL.md
- Access to secretsline 71
[Credential-related source omitted]
skills/sn-search-code/scripts/github_search.py
skills/sn-search-code/scripts/hackernews_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
API_URL = "https://hn.algolia.com/api/v1" - Network accessline 38
object_id = hit.get("objectID", "") hn_url = f"https://news.ycombinator.com/item?id={object_id}" - Network accessline 39
hn_url = f"https://news.ycombinator.com/item?id={object_id}"
skills/sn-search-code/scripts/huggingface_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
API_BASE = "https://huggingface.co/api" - Network accessline 59
return make_item( title=model_id, url=f"https://huggingface.co/{model_id}", - Network accessline 60
title=model_id, url=f"https://huggingface.co/{model_id}", snippet=_model_snippet(item), - Network accessline 61
url=f"https://huggingface.co/{model_id}", - Network accessline 76
return make_item( title=dataset_id, url=f"https://huggingface.co/datasets/{dataset_id}", - Network accessline 77
title=dataset_id, url=f"https://huggingface.co/datasets/{dataset_id}", snippet=description, - Network accessline 78
url=f"https://huggingface.co/datasets/{dataset_id}", - Network accessline 90
return make_item( title=space_id, url=f"https://huggingface.co/spaces/{space_id}", - Network accessline 91
title=space_id, url=f"https://huggingface.co/spaces/{space_id}", snippet=item.get("shortDescription") or "", - Network accessline 92
url=f"https://huggingface.co/spaces/{space_id}",
skills/sn-search-code/scripts/search_utils.py
- Executable scriptline 1
Executable file - Network accessline 105
if headers: default_headers.update(headers) return httpx.Client( - Network accessline 106
default_headers.update(headers) return httpx.Client( timeout=timeout, - Network accessline 107
return httpx.Client( - Access to secretsline 123
[Credential-related source omitted]
skills/sn-search-code/scripts/stackoverflow_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
API_URL = "https://api.stackexchange.com/2.3/search/advanced" - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 26
[Credential-related source omitted] - Access to secretsline 75
[Credential-related source omitted] - Access to secretsline 77
[Credential-related source omitted]
skills/sn-search-finance/scripts/finance_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 265
def yahoo_quote_url(symbol: str, path: str = "") -> str: suffix = f"/{path.strip('/')}" if path else "" return f"https://finance.yahoo.com/quote/{symbol}{suffix}" - Network accessline 267
return f"https://finance.yahoo.com/quote/{symbol}{suffix}"
skills/sn-search-image/SKILL.md
- Access to secretsline 4
[Credential-related source omitted]
skills/sn-search-image/scripts/serper_image_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 13
DEFAULT_BASE_URL = "https://google.serper.dev" - Access to secretsline 52
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 54
[Credential-related source omitted] - Access to secretsline 71
[Credential-related source omitted] - Access to secretsline 78
[Credential-related source omitted] - Access to secretsline 82
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Access to secretsline 152
[Credential-related source omitted] - Access to secretsline 154
[Credential-related source omitted]
skills/sn-search-market-cn/SKILL.md
- Network accessline 46
| 场景 | 资源 | URL | 用法 | | --- | --- | --- | --- | | 宏观经济 | 国家统计局国家数据 | https://data.stats.gov.cn/ | GDP、CPI、PPI、PMI、工业、社零、固定资产投资、房地产、人口、就业 | - Network accessline 47
| --- | --- | --- | --- | | 宏观经济 | 国家统计局国家数据 | https://data.stats.gov.cn/ | GDP、CPI、PPI、PMI、工业、社零、固定资产投资、房地产、人口、就业 | | 宏观经济 | 国家统计局官网 | https://www.stats.gov.cn/ | 统计公报、月度/年度统计、专题数据、新闻发布稿 | - Network accessline 48
| 宏观经济 | 国家统计局国家数据 | https://data.stats.gov.cn/ | GDP、CPI、PPI、PMI、工业、社零、固定资产投资、房地产、人口、就业 | - Network accessline 49
| 宏观经济 | 国家统计局官网 | https://www.stats.gov.cn/ | 统计公报、月度/年度统计、专题数据、新闻发布稿 | - Network accessline 50
| 金融货币 | 中国人民银行调查统计 | https://www.pbc.gov.cn/diaochatongjisi/116219/index.html | M2、社融、贷款、利率、金融统计报告 | - Network accessline 51
| 外汇 | 国家外汇管理局统计数据 | https://www.safe.gov.cn/safe/tjsj1/index.html | 外储、汇率、国际收支、结售汇、跨境收支 | - Network accessline 52
| 商贸 | 商务部商务数据中心 | https://data.mofcom.gov.cn/index.shtml | 国内贸易、外资、ODI、服务贸易、商品市场 | - Network accessline 53
| 政府采购 | 中国政府采购网 | https://www.ccgp.gov.cn/xxgg/ | 采购公告、中标公告、预算金额、供应商、采购人 | - Network accessline 54
| 招投标 | 全国公共资源交易平台 | https://www.ggzy.gov.cn/ | 工程建设、政府采购、土地矿权、产权交易 | - Network accessline 55
| 信用风控 | 信用中国 | https://www.creditchina.gov.cn/ | 行政处罚、失信、信用承诺、信用信息公示 | - Network accessline 56
| 司法风险 | 中国执行信息公开网 | http://zxgk.court.gov.cn/ | 被执行人、失信被执行人、限制消费线索 | - Network accessline 57
| 破产风险 | 全国企业破产重整案件信息网 | https://pccz.court.gov.cn/ | 破产、重整、清算案件和招募投资人信息 | - Network accessline 58
| 上市公司 | 巨潮资讯 | https://www.cninfo.com.cn/new/index | A 股公告、年报、季报、招股书、问询函;优先用脚本 | - Network accessline 59
| 证券交易所 | 上海证券交易所 | https://www.sse.com.cn/ | 沪市公告、监管信息、上市公司、债券、基金、市场数据 | - Network accessline 60
| 证券交易所 | 深圳证券交易所 | https://www.szse.cn/ | 深市公告、监管信息、上市公司、市场数据 | - Network accessline 61
| 证券交易所 | 北京证券交易所 | https://www.bse.cn/ | 北交所公告、上市公司、市场统计 | - Network accessline 62
| 证券监管 | 中国证监会 | https://www.csrc.gov.cn/ | 监管政策、处罚、IPO、基金、证券期货统计 | - Network accessline 63
| 知识产权 | 国家知识产权局 | https://www.cnipa.gov.cn/ | 专利、商标、地理标志、知识产权政策 | - Network accessline 64
| 知识产权 | 专利检索及分析系统介绍 | https://www.cnipa.gov.cn/art/2023/2/13/art_3166_182074.html | 专利检索入口说明、技术路线和竞品研发趋势线索 | - Network accessline 65
| 医疗器械 | NMPA 医疗器械 UDI 数据共享 | https://udi.nmpa.gov.cn/toDetail.html?CatalogId=3&infoId=40 | 只用页面查询/数据下载;不要申请或使用接口授权码 | - Network accessline 66
| 医保 | 国家医保局 | https://www.nhsa.gov.cn/ | 医保目录、集采、支付标准、医保政策 | - Network accessline 67
| 农业 | 农业农村部数据平台 | https://data.moa.gov.cn/ | 农产品价格、农业生产、畜牧、水产、市场监测 | - Network accessline 68
| 交通物流 | 交通运输部数据 | https://www.mot.gov.cn/shuju/ | 货运、客运、港口吞吐量、公路水路运输 | - Network accessline 69
| 快递物流 | 国家邮政局 | https://www.spb.gov.cn/ | 快递业务量、业务收入、区域结构 | - Network accessline 70
| 民航 | 中国民航局 | https://www.caac.gov.cn/ | 旅客吞吐量、货邮吞吐量、航班、机场统计 | - Network accessline 71
| 能源 | 国家能源局 | https://www.nea.gov.cn/ | 电力、煤炭、油气、新能源、能源政策 | - Network accessline 72
| 环境 | 生态环境部环境质量 | https://www.mee.gov.cn/hjzl/ | 空气质量、水质、生态环境公报、环保监管 | - Network accessline 73
| 电力 | 中国电力企业联合会 | https://www.cec.org.cn/ | 发电量、用电量、电力行业运行、行业指数 | - Network accessline 74
| 工业运行 | 工业和信息化部 | https://www.miit.gov.cn/ | 工业经济、通信业、软件业、中小企业、政策 |
skills/sn-search-market-cn/scripts/free_market_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 16
CNINFO_QUERY_URL = "https://www.cninfo.com.cn/new/hisAnnouncement/query" - Network accessline 17
CNINFO_STATIC_BASE = "https://static.cninfo.com.cn/" - Network accessline 25
"Accept": "application/json, text/javascript, */*; q=0.01", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "Origin": "https://www.cninfo.com.cn", - Network accessline 26
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "Origin": "https://www.cninfo.com.cn", "Referer": "https://www.cninfo.com.cn/new/commonUrl?url=disclosure/list/notice", - Network accessline 27
"Origin": "https://www.cninfo.com.cn", - Network accessline 28
"Referer": "https://www.cninfo.com.cn/new/commonUrl?url=disclosure/list/notice", - Network accessline 30
"X-Requested-With": "XMLHttpRequest", } req = urllib.request.Request(url, data=data, headers=headers, method="POST") - Network accessline 31
} req = urllib.request.Request(url, data=data, headers=headers, method="POST") try: - Network accessline 32
req = urllib.request.Request(url, data=data, headers=headers, method="POST") - Network accessline 33
try: with urllib.request.urlopen(req, timeout=timeout) as resp: body = resp.read() - Network accessline 34
with urllib.request.urlopen(req, timeout=timeout) as resp:
skills/sn-search-social-cn/scripts/bilibili_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
SEARCH_URL = "https://api.bilibili.com/x/web-interface/search/all/v2" - Network accessline 15
headers = { "Referer": "https://www.bilibili.com", - Network accessline 16
"Referer": "https://www.bilibili.com", - Network accessline 17
"Origin": "https://www.bilibili.com", - Network accessline 48
if result_type == "video": bvid = entry.get("bvid", "") url = f"https://www.bilibili.com/video/{bvid}" if bvid else entry.get("arcurl", "") - Network accessline 49
bvid = entry.get("bvid", "") url = f"https://www.bilibili.com/video/{bvid}" if bvid else entry.get("arcurl", "") items.append(make_item( - Network accessline 50
url = f"https://www.bilibili.com/video/{bvid}" if bvid else entry.get("arcurl", "") - Network accessline 60
)) elif result_type == "article": url = f"https://www.bilibili.com/read/cv{entry.get('id', '')}" - Network accessline 61
elif result_type == "article": url = f"https://www.bilibili.com/read/cv{entry.get('id', '')}" items.append(make_item( - Network accessline 62
url = f"https://www.bilibili.com/read/cv{entry.get('id', '')}"
skills/sn-search-social-cn/scripts/douyin_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
SEARCH_URL = "https://www.douyin.com/aweme/v1/web/general/search/single/" - Network accessline 21
headers = { "Cookie": cookie, "Referer": "https://www.douyin.com/search/" + query, - Network accessline 22
"Cookie": cookie, "Referer": "https://www.douyin.com/search/" + query, "Origin": "https://www.douyin.com", - Network accessline 23
"Referer": "https://www.douyin.com/search/" + query, - Network accessline 24
"Origin": "https://www.douyin.com", - Network accessline 60
items.append(make_item( title=desc[:100], url=f"https://www.douyin.com/video/{aweme_id}" if aweme_id else "", - Network accessline 61
title=desc[:100], url=f"https://www.douyin.com/video/{aweme_id}" if aweme_id else "", snippet=desc[:300], - Network accessline 62
url=f"https://www.douyin.com/video/{aweme_id}" if aweme_id else "",
skills/sn-search-social-cn/scripts/search_utils.py
- Executable scriptline 1
Executable file - Network accessline 105
if headers: default_headers.update(headers) return httpx.Client( - Network accessline 106
default_headers.update(headers) return httpx.Client( timeout=timeout, - Network accessline 107
return httpx.Client( - Access to secretsline 123
[Credential-related source omitted]
skills/sn-search-social-cn/scripts/zhihu_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 16
SEARCH_URL = "https://www.zhihu.com/api/v4/search_v3" - Network accessline 27
headers = { "Cookie": cookie, "Referer": "https://www.zhihu.com/search", - Network accessline 28
"Cookie": cookie, "Referer": "https://www.zhihu.com/search", "Origin": "https://www.zhihu.com", - Network accessline 29
"Referer": "https://www.zhihu.com/search", - Network accessline 30
"Origin": "https://www.zhihu.com", - Network accessline 95
question_title = _strip_html(q.get("name") or q.get("title") or "") qid = q.get("id", "") question_url = f"https://www.zhihu.com/question/{qid}" if qid else "" - Network accessline 96
qid = q.get("id", "") question_url = f"https://www.zhihu.com/question/{qid}" if qid else "" answer_count = obj.get("answer_count") - Network accessline 97
question_url = f"https://www.zhihu.com/question/{qid}" if qid else "" - Network accessline 160
oid = obj.get("id", "") if obj_type == "article": return f"https://zhuanlan.zhihu.com/p/{oid}" if oid else "" - Network accessline 161
if obj_type == "article": return f"https://zhuanlan.zhihu.com/p/{oid}" if oid else "" if obj_type == "answer": - Network accessline 162
return f"https://zhuanlan.zhihu.com/p/{oid}" if oid else "" - Network accessline 164
q = obj.get("question", {}) qid = q.get("id", "") return f"https://www.zhihu.com/question/{qid}/answer/{oid}" if qid and oid else "" - Network accessline 165
qid = q.get("id", "") return f"https://www.zhihu.com/question/{qid}/answer/{oid}" if qid and oid else "" if obj_type == "question": - Network accessline 166
return f"https://www.zhihu.com/question/{qid}/answer/{oid}" if qid and oid else "" - Network accessline 168
return f"https://www.zhihu.com/question/{oid}" if oid else "" - Network accessline 172
return raw.replace("https://api.zhihu.com/", "https://www.zhihu.com/")
skills/sn-search-social-en/SKILL.md
skills/sn-search-social-en/scripts/reddit_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
SEARCH_URL = "https://www.reddit.com/search.json" - Network accessline 21
if subreddit: url = f"https://www.reddit.com/r/{subreddit}/search.json" - Network accessline 22
url = f"https://www.reddit.com/r/{subreddit}/search.json" - Network accessline 29
headers = { "User-Agent": "Mozilla/5.0 (compatible; search-skill/1.0; +https://github.com)", - Network accessline 30
"User-Agent": "Mozilla/5.0 (compatible; search-skill/1.0; +https://github.com)", - Network accessline 43
items.append(make_item( title=post.get("title", ""), url=f"https://reddit.com{post.get('permalink', '')}", - Network accessline 44
title=post.get("title", ""), url=f"https://reddit.com{post.get('permalink', '')}", snippet=_truncate(post.get("selftext", ""), 300), - Network accessline 45
url=f"https://reddit.com{post.get('permalink', '')}",
skills/sn-search-social-en/scripts/search_utils.py
- Executable scriptline 1
Executable file - Network accessline 105
if headers: default_headers.update(headers) return httpx.Client( - Network accessline 106
default_headers.update(headers) return httpx.Client( timeout=timeout, - Network accessline 107
return httpx.Client( - Access to secretsline 123
[Credential-related source omitted]
skills/sn-search-social-en/scripts/twitter_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
TIKHUB_BASE = "https://api.tikhub.io" - Network accessline 47
screen_name = user.get("screen_name", "") tweet_id = content.get("id_str") or content.get("rest_id") or "" url = f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else "" - Network accessline 49
url = f"https://x.com/{screen_name}/status/{tweet_id}" if screen_name and tweet_id else ""
skills/sn-search-social-en/scripts/youtube_search.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 10
API_URL = "https://www.googleapis.com/youtube/v3/search" - Access to secretsline 13
[Credential-related source omitted] - Access to secretsline 15
[Credential-related source omitted] - Access to secretsline 16
[Credential-related source omitted] - Access to secretsline 24
[Credential-related source omitted] - Network accessline 37
items.append(make_item( title=snippet.get("title", ""), url=f"https://www.youtube.com/watch?v={video_id}" if video_id else "", - Network accessline 38
title=snippet.get("title", ""), url=f"https://www.youtube.com/watch?v={video_id}" if video_id else "", snippet=snippet.get("description", ""), - Network accessline 39
url=f"https://www.youtube.com/watch?v={video_id}" if video_id else "", - Access to secretsline 51
[Credential-related source omitted] - Access to secretsline 57
[Credential-related source omitted] - Access to secretsline 59
[Credential-related source omitted]
skills/sn-search-social-media/SKILL.md
- Network accessline 36
| 场景 | API 脚本 | browser-use 入口 | 说明 | | --- | --- | --- | --- | | 百科页面关注度、公众注意力辅助指标 | `scripts/wikimedia_pageviews.py` | `https://doc.wikimedia.org/generated-data-platform/aqs/analytics-api/` | Wikimedia Pageviews 需要 User-Agent | - Network accessline 37
| --- | --- | --- | --- | | 百科页面关注度、公众注意力辅助指标 | `scripts/wikimedia_pageviews.py` | `https://doc.wikimedia.org/generated-data-platform/aqs/analytics-api/` | Wikimedia Pageviews 需要 User-Agent | | 开源项目热度、工程活动、开发者生态 | `scripts/github_public_sea - Network accessline 38
| 百科页面关注度、公众注意力辅助指标 | `scripts/wikimedia_pageviews.py` | `https://doc.wikimedia.org/generated-data-platform/aqs/analytics-api/` | Wikimedia Pageviews 需要 User-Agent | - Network accessline 39
| 开源项目热度、工程活动、开发者生态 | `scripts/github_public_search.py` | `https://github.com/search` | 只搜公共仓库和 Issue;不搜 code | - Network accessline 40
| 技术问题热度、开发者需求 | `scripts/stackexchange_search.py` | `https://stackexchange.com/search` | 默认 Stack Overflow,可指定 `--site` | - Network accessline 41
| 创业、科技社区讨论热榜 | `scripts/hackernews_hotspots.py` | `https://news.ycombinator.com/` | 官方 API 不支持服务端搜索,脚本本地过滤 | - Network accessline 42
| 指数趋势、搜索热度、地域、人群画像、需求变化 | 无 | `https://index.baidu.com/` | 百度指数;网页可用,只用免费可见内容 | - Network accessline 43
| 社媒舆情、热点、品牌声量、事件监测 | 无 | `https://s.weibo.com/top/summary` | 微博热搜/微指数;网页可用,只用免费可见内容 |
skills/sn-search-social-media/scripts/_filters.py
- Executable scriptline 1
Executable file
skills/sn-search-social-media/scripts/github_public_search.py
skills/sn-search-social-media/scripts/hackernews_hotspots.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 19
API_BASE = "https://hacker-news.firebaseio.com/v0" - Network accessline 43
def fetch(kind: str, limit: int, query: str | None = None, scan: int = 80) -> list[dict]: - Network accessline 57
title = html.unescape(row.get("title", "")) text = _strip_html(row.get("text", "")) url = row.get("url") or f"https://news.ycombinator.com/item?id={item_id}" - Network accessline 58
text = _strip_html(row.get("text", "")) url = row.get("url") or f"https://news.ycombinator.com/item?id={item_id}" item = make_item( - Network accessline 59
url = row.get("url") or f"https://news.ycombinator.com/item?id={item_id}" - Network accessline 62
url=url, snippet=text, hn_url=f"https://news.ycombinator.com/item?id={item_id}", - Network accessline 63
snippet=text, hn_url=f"https://news.ycombinator.com/item?id={item_id}", id=item_id, - Network accessline 64
hn_url=f"https://news.ycombinator.com/item?id={item_id}", - Network accessline 91
try: items = fetch(args.kind, args.limit, args.query, args.scan) - Network accessline 92
items = fetch(args.kind, args.limit, args.query, args.scan)
skills/sn-search-social-media/scripts/search_utils.py
- Executable scriptline 1
Executable file - Network accessline 105
if headers: default_headers.update(headers) return httpx.Client( - Network accessline 106
default_headers.update(headers) return httpx.Client( timeout=timeout, - Network accessline 107
return httpx.Client( - Access to secretsline 123
[Credential-related source omitted]
skills/sn-search-social-media/scripts/stackexchange_search.py
skills/sn-search-social-media/scripts/wikimedia_pageviews.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 21
API_BASE = "https://wikimedia.org/api/rest_v1/metrics/pageviews" - Network accessline 22
[Credential-related source omitted] - Access to secretsline 22
[Credential-related source omitted] - Network accessline 23
"WIKIMEDIA_USER_AGENT", "sensenova-sn-search-social-media/0.1 (https://github.com/SenseTime-FVG/sensenova)", ) - Network accessline 24
"sensenova-sn-search-social-media/0.1 (https://github.com/SenseTime-FVG/sensenova)", - Network accessline 69
items.append(make_item( title=f"{title} - {timestamp}", url=f"https://{project}/wiki/{quote(row.get('article', article), safe='/_')}", - Network accessline 70
title=f"{title} - {timestamp}", url=f"https://{project}/wiki/{quote(row.get('article', article), safe='/_')}", snippet=f"{views} pageviews", - Network accessline 71
url=f"https://{project}/wiki/{quote(row.get('article', article), safe='/_')}", - Network accessline 104
item = make_item( title=title, url=f"https://{project}/wiki/{quote(article, safe='/_')}", - Network accessline 105
title=title, url=f"https://{project}/wiki/{quote(article, safe='/_')}", snippet=f"{row.get('views', 0)} pageviews; rank {row.get('rank')}", - Network accessline 106
url=f"https://{project}/wiki/{quote(article, safe='/_')}",
skills/sn-search-year-report/SKILL.md
- Network accessline 30
python scripts/year_report_api.py sec-company apple --limit 5 python scripts/year_report_api.py sec-filings --ticker AAPL --limit 5 python scripts/year_report_api.py download "https://static.cninfo.com.cn/finalpage/2024-03-15/1219306493.PDF - Network accessline 32
python scripts/year_report_api.py download "https://static.cninfo.com.cn/finalpage/2024-03-15/1219306493.PDF" --output report.pdf - Network accessline 49
| 范围 | 资源 | URL | 使用要点 | | --- | --- | --- | --- | | A 股全市场 | 巨潮资讯 | https://www.cninfo.com.cn/new/index?lang=zh | 搜索公司名/证券代码,筛“年度报告” | - Network accessline 50
| --- | --- | --- | --- | | A 股全市场 | 巨潮资讯 | https://www.cninfo.com.cn/new/index?lang=zh | 搜索公司名/证券代码,筛“年度报告” | | 沪市上市公司 | 上交所定期报告 | https://www.sse.com.cn/disclosure/listedinfo/regular/ | 按证券代码、年份、定期报告筛选 | - Network accessline 51
| A 股全市场 | 巨潮资讯 | https://www.cninfo.com.cn/new/index?lang=zh | 搜索公司名/证券代码,筛“年度报告” | - Network accessline 52
| 沪市上市公司 | 上交所定期报告 | https://www.sse.com.cn/disclosure/listedinfo/regular/ | 按证券代码、年份、定期报告筛选 | - Network accessline 53
| 深市上市公司 | 深交所上市公司公告 | https://www.szse.cn/www/disclosure/notice/company/ | 按公司、公告类型、时间筛选 | - Network accessline 54
| 北交所上市公司 | 北交所信息披露 | https://www.bse.cn/disclosure/announcement.html | 搜索年度报告/定期报告 | - Network accessline 55
| 港股 | HKEXnews Predefined Documents | https://www1.hkexnews.hk/search/predefineddoc.xhtml | 选 Annual Report / Environmental, Social and Governance Information | - Network accessline 56
| 中国债券发行人 | 中国货币网债券信息披露 | https://www.chinamoney.org.cn/chinese/zqfx/ | 搜索发行人年报、审计报告、跟踪评级 | - Network accessline 57
| 中国债券发行人 | 上海清算所 | https://www.shclearing.com.cn/ | 搜索发行人年度报告/审计报告 | - Network accessline 58
| 中国债券发行人 | 上交所债券信息披露 | https://bond.sse.com.cn/disclosure/ | 搜索债券发行人年度报告 | - Network accessline 59
| 英国公司账目 | Companies House 网页 | https://find-and-update.company-information.service.gov.uk/ | 无 API key 时查 filing history / accounts | - Network accessline 60
| 加拿大上市公司 | SEDAR+ Documents Search | https://www.sedarplus.ca/csa-party/service/create.html?_locale=en&service=searchDocuments&targetAppCode=csa-party | 选择 Documents,按 issuer/profile 和 annual filings 搜索 | - Network accessline 61
| 新加坡上市公司 | SGX Company Announcements | https://www.sgx.com/securities/company-announcements | 搜索 Annual Report 或公司代码 | - Network accessline 62
| 澳洲上市公司 | ASX Announcements | https://www.asx.com.au/markets/trade-our-cash-market/announcements | 按 ASX code 和 announcement type 搜索 | - Network accessline 66
| 资源 | 原因 | | --- | --- | | 国家企业信用信息公示系统 `https://www.gsxt.gov.cn/` | 与工商年报相关,但访问被阻断,不作为稳定免费源 | - Network accessline 67
| --- | --- | | 国家企业信用信息公示系统 `https://www.gsxt.gov.cn/` | 与工商年报相关,但访问被阻断,不作为稳定免费源 | | 市场监管总局说明页 | 只是政策说明,不是年报搜索入口 | - Network accessline 68
| 国家企业信用信息公示系统 `https://www.gsxt.gov.cn/` | 与工商年报相关,但访问被阻断,不作为稳定免费源 |
skills/sn-search-year-report/scripts/year_report_api.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 18
[Credential-related source omitted] - Access to secretsline 23
[Credential-related source omitted] - Network accessline 40
) -> bytes: req_headers = {"User-Agent": DEFAULT_UA, **(headers or {})} req = urllib.request.Request(url, data=data, headers=req_headers, method=method) - Network accessline 41
req_headers = {"User-Agent": DEFAULT_UA, **(headers or {})} req = urllib.request.Request(url, data=data, headers=req_headers, method=method) try: - Network accessline 42
req = urllib.request.Request(url, data=data, headers=req_headers, method=method) - Network accessline 43
try: with urllib.request.urlopen(req, timeout=timeout) as resp: return resp.read() - Network accessline 44
with urllib.request.urlopen(req, timeout=timeout) as resp: - Network accessline 64
req_headers = { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "Referer": "https://www.cninfo.com.cn/new/index", - Network accessline 65
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "Referer": "https://www.cninfo.com.cn/new/index", "Origin": "https://www.cninfo.com.cn", - Network accessline 66
"Referer": "https://www.cninfo.com.cn/new/index", - Network accessline 67
"Origin": "https://www.cninfo.com.cn", - Network accessline 102
def cmd_cninfo(args: argparse.Namespace) -> None: url = "https://www.cninfo.com.cn/new/hisAnnouncement/query" - Network accessline 103
url = "https://www.cninfo.com.cn/new/hisAnnouncement/query" - Network accessline 123
title = strip_tags(item.get("announcementTitle")) pdf_path = item.get("adjunctUrl") pdf_url = f"https://static.cninfo.com.cn/{pdf_path}" if pdf_path else None - Network accessline 124
pdf_path = item.get("adjunctUrl") pdf_url = f"https://static.cninfo.com.cn/{pdf_path}" if pdf_path else None items.append( - Network accessline 125
pdf_url = f"https://static.cninfo.com.cn/{pdf_path}" if pdf_path else None - Network accessline 153
def sec_tickers() -> list[dict]: url = "https://www.sec.gov/files/company_tickers.json" - Network accessline 154
url = "https://www.sec.gov/files/company_tickers.json" - Network accessline 192
def cmd_sec_company(args: argparse.Namespace) -> None: url = "https://www.sec.gov/files/company_tickers.json" - Network accessline 193
url = "https://www.sec.gov/files/company_tickers.json" - Network accessline 197
def cmd_sec_filings(args: argparse.Namespace) -> None: cik = resolve_cik(args.cik, args.ticker) url = f"https://data.sec.gov/submissions/CIK{cik}.json" - Network accessline 198
cik = resolve_cik(args.cik, args.ticker) url = f"https://data.sec.gov/submissions/CIK{cik}.json" data = request_json(url, headers={"User-Agent": SEC_UA}) - Network accessline 199
url = f"https://data.sec.gov/submissions/CIK{cik}.json" - Network accessline 209
if accession and primary_doc: accession_path = accession.replace("-", "") doc_url = f"https://www.sec.gov/Archives/edgar/data/{int(cik)}/{accession_path}/{primary_doc}" - Network accessline 210
accession_path = accession.replace("-", "") doc_url = f"https://www.sec.gov/Archives/edgar/data/{int(cik)}/{accession_path}/{primary_doc}" filing_url = f"https://www.sec.gov/Archives/edgar/data/{int(cik)}/{accession_ - Network accessline 211
doc_url = f"https://www.sec.gov/Archives/edgar/data/{int(cik)}/{accession_path}/{primary_doc}" - Network accessline 212
filing_url = f"https://www.sec.gov/Archives/edgar/data/{int(cik)}/{accession_path}/"
skills/sn-team-harness/SKILL.md
skills/sn-update/SKILL.md
- Network accessline 31
Refresh installed `sn-*` skills from upstream [SenseNova-Skills](https://github.com/OpenSenseNova/SenseNova-Skills). - Network accessline 32
[SenseNova-Skills](https://github.com/OpenSenseNova/SenseNova-Skills). - Network accessline 60
Persistent cache at `~/.cache/sn-update/repo/`. Default URL: `https://github.com/OpenSenseNova/SenseNova-Skills.git`. User may override - Network accessline 61
`https://github.com/OpenSenseNova/SenseNova-Skills.git`. User may override
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Hidden characters: 2 facts
- Text direction control U+202A, in codesn-deep-research/workbench-runtime/dist/assets/MarkdownArtifactViewer-C7xIspsK.js:2High confidence
- Joiner U+200C outside an emoji or a script that needs it, in codesn-deep-research/workbench-runtime/dist/assets/MarkdownArtifactViewer-C7xIspsK.js:2High confidence
Signal confidence: 498 facts
- Network access in prose of documentationdocs/sn-code-video.md:115Low confidence
- Network access in prose of documentationdocs/sn-code-video.md:116Low confidence
- Network access in prose of documentationdocs/sn-code-video_cn.md:108Low confidence
- Network access in prose of documentationdocs/sn-code-video_cn.md:109Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valuedocs/sn-image-generate_en.md:10Low confidence
- Network access in prose of documentationdocs/sn-image-generate_en.md:75Low confidence
- Network access in prose of documentationdocs/sn-image-generate_en.md:76Low confidence
- Network access in prose of documentationdocs/sn-image-generate_en.md:77Low confidence
- Network access in prose of documentationdocs/sn-image-generate_en.md:81Low confidence
- Network access in prose of documentationdocs/sn-image-generate_en.md:101Low confidence
- Network access in prose of documentationdocs/sn-image-generate_en.md:115Low confidence
- Network access in prose of documentationdocs/sn-image-generate_en.md:116Low confidence
- Network access in code of documentationdocs/sn-image-generate_en.md:125Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valuedocs/sn-image-generate_en.md:126Low confidence
- Network access in code of documentationdocs/sn-image-generate_en.md:133Low confidence
- Access to secrets in code of documentation: a variable, placeholder or call, not a stored valuedocs/sn-image-generate_en.md:134Low confidence
- Network access in prose of documentationsn-code-video/references/simulations-and-generative.md:52Low confidence
- Network access in prose of documentationsn-code-video/references/simulations-and-generative.md:53Low confidence
- Executable script in code of a file that runssn-code-video/scripts/audio_check.sh:1High confidence
- Executable script in a comment of a file that runssn-code-video/scripts/capture.mjs:1Low confidence
- Network access in code of a file that runssn-code-video/scripts/capture.mjs:25High confidence
- Network access in code of a file that runssn-code-video/scripts/capture.mjs:27High confidence
- Executable script in code of a file that runssn-code-video/scripts/check_video.sh:1High confidence
- Executable script in code of a file that runssn-code-video/scripts/contact_sheet.sh:1High confidence
- Executable script in prose of a file that runssn-code-video/scripts/sync_check.py:1Low confidence
- Executable script in prose of a file that runssn-code-video/scripts/synth.py:1Low confidence
- Executable script in prose of a file that runssn-code-video/scripts/tts.py:1Low confidence
- Access to secrets in prose of the SKILL.mdsn-da-image-caption/SKILL.md:18Low confidence
- Executable script in code of a file that runssn-da-image-caption/scripts/caption.py:1High confidence
- Access to secrets in a comment of a file that runssn-da-image-caption/scripts/caption.py:46Low confidence
- Network access in code of a file that runssn-da-image-caption/scripts/caption.py:48High confidence
- Access to secrets in code of a file that runssn-da-image-caption/scripts/caption.py:51High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:52Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:53Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:54Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:58Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:59Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:60Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:64Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:65Low confidence
- Access to secrets in code of a file that runssn-da-image-caption/scripts/caption.py:227High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:235Low confidence
- Access to secrets in code of a file that runssn-da-image-caption/scripts/caption.py:272High confidence
- Access to secrets in code of a file that runssn-da-image-caption/scripts/caption.py:299High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:325Low confidence
- Access to secrets in code of a file that runssn-da-image-caption/scripts/caption.py:344High confidence
- Access to secrets in code of a file that runssn-da-image-caption/scripts/caption.py:361High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesn-da-image-caption/scripts/caption.py:382Low confidence
- Access to secrets in code of a file that runssn-da-image-caption/scripts/caption.py:396High confidence
- Access to secrets in code of a file that runssn-da-image-caption/scripts/caption.py:411High confidence
and 448 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md skills/sn-code-video/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/sn-code-video/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/sn-code-video/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/sn-code-video/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/sn-code-video/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/sn-code-video/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/opensensenova-sensenova-skills/)