Merge reviewed contributor PR #3059 into backlog batch

Source-PR: https://github.com/affaan-m/ECC/pull/3059
Source-Head: 1673814b0b

Local integration checkpoint; aggregate review and hosted acceptance pending.
This commit is contained in:
affaan-m
2026-09-27 23:36:52 -04:00
12 changed files with 53 additions and 18 deletions
@@ -1,5 +1,5 @@
---
name: pubmed-database
name: scientific-db-pubmed-database
description: 生物医学文献、MeSH クエリ、PMID 検索、引用取得、および API を利用した文献モニタリングのための PubMed および NCBI E-utilities の直接検索ワークフロー。
origin: community
---
@@ -1,5 +1,5 @@
---
name: uspto-database
name: scientific-db-uspto-database
description: 公式記録の検索、PatentSearch クエリ、TSDR チェック、譲渡データ、および再現可能な IP 調査ログのための USPTO 特許・商標データワークフロー。
origin: community
---
@@ -1,5 +1,5 @@
---
name: gget
name: scientific-pkg-gget
description: ゲノムデータベースへのクイック検索、配列検索、BLAST スタイルの検索、エンリッチメントチェック、および再現可能なバイオインフォマティクス証拠ログのための gget CLI および Python ワークフロー。
origin: community
---
@@ -1,5 +1,5 @@
---
name: literature-review
name: scientific-thinking-literature-review
description: 学術、生物医学、技術、科学的なトピックに対するシステマティックな文献レビューワークフロー。検索計画、ソースのスクリーニング、統合、引用確認、証拠ログを含む。
origin: community
---
@@ -1,5 +1,5 @@
---
name: scholar-evaluation
name: scientific-thinking-scholar-evaluation
description: 論文、提案書、文献レビュー、方法論セクション、証拠の質、引用サポート、研究論文フィードバックのための構造化された学術的作業評価。
origin: community
---
@@ -1,5 +1,5 @@
---
name: pubmed-database
name: scientific-db-pubmed-database
description: Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring. Use when a task needs biomedical literature from PubMed rather than general web search.
metadata:
origin: community
+1 -1
View File
@@ -1,5 +1,5 @@
---
name: uspto-database
name: scientific-db-uspto-database
description: USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs. Use when a task needs official United States patent or trademark records from USPTO systems.
metadata:
origin: community
+1 -1
View File
@@ -1,5 +1,5 @@
---
name: gget
name: scientific-pkg-gget
description: gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs. Use when a task needs quick bioinformatics lookup across genomic reference databases with the gget CLI or Python package.
metadata:
origin: community
@@ -1,5 +1,5 @@
---
name: literature-review
name: scientific-thinking-literature-review
description: Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging. Use when the task is to find, screen, synthesize, and cite a body of academic or technical literature.
metadata:
origin: community
@@ -1,5 +1,5 @@
---
name: scholar-evaluation
name: scientific-thinking-scholar-evaluation
description: Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback. Use when evaluating academic or scientific work — papers, proposals, methods sections, or evidence quality — against a repeatable rubric.
metadata:
origin: community
+29 -7
View File
@@ -320,12 +320,34 @@ test('published carrier schema validates outputs and rejects extra or capability
}));
test('real canonical inventory projects every selected bundled resource without relying on mirrors', () => {
const carrier = plan({ repoRoot: REPO_ROOT, profileId: 'full@1', target: 'opencode' });
const registry = registryLibrary.loadContextRegistry({ repoRoot: REPO_ROOT });
assert.deepEqual(carrier.selectedIds, registry.entries.map(entry => entry.id));
assert.equal(carrier.files.filter(file => file.kind === 'copy').length,
registry.entries.reduce((count, entry) => count + entry.resources.length, 0));
assert.ok(carrier.files.every(file => file.kind !== 'copy' || file.sourcePath.startsWith('skills/')));
assert.ok(carrier.files.some(file => file.destinationPath === '.opencode/skills/gget/SKILL.md'
&& file.skillId === 'skill:scientific-pkg-gget'));
const renamed = [
['scientific-db-pubmed-database', 'pubmed-database'],
['scientific-db-uspto-database', 'uspto-database'],
['scientific-pkg-gget', 'gget'],
['scientific-thinking-literature-review', 'literature-review'],
['scientific-thinking-scholar-evaluation', 'scholar-evaluation'],
];
for (const target of Object.keys(LAYOUTS)) {
const carrier = plan({ repoRoot: REPO_ROOT, profileId: 'full@1', target });
assert.deepEqual(carrier.selectedIds, registry.entries.map(entry => entry.id));
assert.equal(carrier.files.filter(file => file.kind === 'copy').length,
registry.entries.reduce((count, entry) => count + entry.resources.length, 0));
assert.ok(carrier.files.every(file => file.kind !== 'copy' || file.sourcePath.startsWith('skills/')));
for (const [name, previousName] of renamed) {
const entry = registry.entries.find(value => value.id === `skill:${name}`);
assert.ok(entry, `missing renamed scientific skill: ${name}`);
const copies = carrier.files.filter(file => file.kind === 'copy' && file.skillId === entry.id);
assert.deepEqual(copies.map(({ sourcePath, destinationPath, digest, bytes }) => (
{ sourcePath, destinationPath, digest, bytes }
)), entry.resources.map(resource => ({
sourcePath: resource.path,
destinationPath: `${LAYOUTS[target].skillRoot}/${name}/${resource.path.slice(`skills/${name}/`.length)}`,
digest: resource.digest, bytes: resource.bytes,
})));
assert.equal(carrier.files.some(file => file.destinationPath.startsWith(
`${LAYOUTS[target].skillRoot}/${previousName}/`
)), false, `old native folder must not be duplicated: ${target}/${previousName}`);
}
}
});
+14 -1
View File
@@ -15,11 +15,24 @@ test('independent packed oracle separates canonical IDs from native metadata nam
const skills = discoverPublishedSkills(require('node:path').resolve(__dirname, '../..'));
const pubmed = skills.find(skill => skill.id === 'skill:scientific-db-pubmed-database');
assert.deepEqual(pubmed, { id: 'skill:scientific-db-pubmed-database',
sourceName: 'scientific-db-pubmed-database', nativeName: 'pubmed-database' });
sourceName: 'scientific-db-pubmed-database', nativeName: 'scientific-db-pubmed-database' });
assert.equal(new Set(skills.map(skill => skill.id)).size, skills.length);
assert.equal(new Set(skills.map(skill => skill.nativeName)).size, skills.length);
});
test('packed oracle preserves a native name that differs from its canonical directory', () => {
const root = fs.mkdtempSync(path.join(os.tmpdir(), 'ecc-packed-names-'));
try {
const skillRoot = path.join(root, 'skills', 'canonical-fixture');
fs.mkdirSync(skillRoot, { recursive: true });
fs.writeFileSync(path.join(skillRoot, 'SKILL.md'),
'---\nname: native-fixture\ndescription: Inert discovery fixture.\n---\n');
assert.deepEqual(discoverPublishedSkills(root), [{
id: 'skill:canonical-fixture', sourceName: 'canonical-fixture', nativeName: 'native-fixture',
}]);
} finally { fs.rmSync(root, { recursive: true, force: true }); }
});
test('tier claims and transferred artifact verification remain explicit', () => {
for (const tier of [1, 2]) {
const manifest = manifestFor({ ...input, tier });