dsh-nsfc-form-check 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.2
4
+
5
+ - Rework the README first screen. The H1 now names what the plugin checks rather
6
+ than repeating the package name, and a question-and-answer table and a standards
7
+ table come before the boundary paragraph.
8
+
9
+ The substance is unchanged and the boundary paragraph is verbatim: in a
10
+ compliance tool that paragraph is what stops a wrong "pass" being read as
11
+ approval, so it moved rather than shrank. What changed is the order - a reader
12
+ or an extractor previously met eleven badges, an install command and a
13
+ disclaimer before learning what the plugin does. The Q&A rows are derived from
14
+ each plugin's own rules and the standards table from the rule pack's
15
+ `document`/`number` fields, so no answer and no standard is hand-typed.
16
+
17
+ All five languages were restructured together; `check:readmes` holds them to the
18
+ same section count, install command and configuration keys.
19
+
3
20
  ## 0.2.1
4
21
 
5
22
  - Ship `CHANGELOG.md` and `SECURITY.md` inside the package. `files` is an
package/README-es.md CHANGED
@@ -1,4 +1,24 @@
1
- # dsh-nsfc-form-check
1
+ # dsh-nsfc-form-check — Revisión formal de una solicitud al NSFC y aviso de indicios de identidad según el listado de la institución
2
+
3
+ `dsh-nsfc-form-check` lee una solicitud al NSFC —sus líneas de texto, las propiedades electrónicas del documento y el listado de términos de identidad de la propia institución— y contrasta ese material con un paquete de reglas versionado: si hay un listado configurado, en qué líneas del cuerpo y dentro de qué rango de líneas configurado aparecen los términos de solicitante, institución y director que usted configuró, qué llevan las propiedades de título, autor, empresa y última modificación, si el material cabe en el límite de extensión que fijó el despliegue, si están presentes los elementos de revisión formal y la declaración de solicitud repetida que usted configuró, si el nombre del director está cumplimentado como exigen las guías anuales, y si aparece algún término clasificado o sensible configurado. Cada hallazgo nombra la cláusula de la que procede e indica si esa cláusula es un requisito directo, un principio o una configuración local, y toda comprobación que no pudo ejecutarse figura en `skipped` con su motivo.
4
+
5
+ ## Qué responde
6
+
7
+ | Usted pregunta | Qué responde |
8
+ |---|---|
9
+ | Nadie rellenó el listado de nombres de solicitantes. ¿La revisión de identidad pasa sin más? | No. `NF-001` es lo primero que se informa cuando `authorNames`, `institutionNames` y `advisorNames` están vacíos, y cada comprobación de identidad que necesita esos términos figura en `skipped` con su motivo. Una lista de hallazgos vacía nunca significa que no hubiera nada mal: lea `NF-001` y las entradas de `skipped` antes de concluir nada. |
10
+ | En el cuerpo aparece un coautor con el mismo apellido que el solicitante. | `NF-002` compara literalmente los `authorNames` configurados, línea por línea, así que un homónimo, un apellido común o la cita del trabajo de otro investigador pueden coincidir. El hallazgo es solo un aviso técnico — 《国家自然科学基金条例》(国务院令第796号) 第二十一条 exige confidencialidad a los evaluadores y no prohíbe que un nombre aparezca en el cuerpo — por lo que un término ya revisado puede añadirse a `allowList`. |
11
+ | La propiedad de autor lleva un nombre. ¿Se informa y hace falta configurar antes un listado? | Sí se informa, y no hace falta listado. `NF-006` no necesita roster: con `authorNames` vacío sigue informando de cualquier propiedad de autor no vacía, y con roster configurado dice si el valor coincide con un nombre de solicitante. `NF-005`, `NF-007` y `NF-008` sí necesitan una lista de términos de identidad y sin ella entran en `skipped`. Las cuatro leen únicamente las propiedades, así que no dicen nada del cuerpo del texto. |
12
+ | Los límites de páginas y palabras los puse yo. ¿Me dirá que la solicitud es demasiado larga? | Solo dentro del límite que usted fijó. `NF-010` sale con `maxLines` y `maxChars` sin configurar y entra en `skipped`, porque esos límites cambian cada año y según el tipo de proyecto; una vez rellenados, informa del número de párrafos extraídos o del total de caracteres que los supera. `maxLines` cuenta párrafos extraídos, no páginas maquetadas, así que no equivale a un número de páginas. |
13
+ | ¿Estaban en el material todos los elementos de revisión formal que pide nuestra oficina de investigación? | `NF-011` se informa en `skipped` hasta que se configure `require`, y sin lista no pretende conocerla. Una vez configurada, compara literalmente sus frases `match` e informa de las que no encuentra. Comprueba que la frase esté presente, no que la casilla esté bien rellenada ni que la firma sea auténtica. |
14
+ | Volvemos a presentar la solicitud del año pasado. ¿Debe constar la nota de declaración? | `NF-012` necesita a la vez `markerPatterns`, que reconocen la redacción de su plantilla para una solicitud repetida o de continuación, y `requiredDisclosure`, que enumera lo que debe declararse. Con cualquiera de los dos sin configurar entra en `skipped`; cuando los marcadores están configurados pero no se encuentra la declaración, informa de que esta regla no es aplicable. Nunca supone una redacción de la declaración ni decide que la solicitud sea realmente repetida. |
15
+
16
+ ## Normas que sigue
17
+
18
+ | Documento | Número | Reglas que lo citan |
19
+ |---|---|---|
20
+ | 《国家自然科学基金条例》 | 国务院令第796号 | NF-001, NF-002, NF-003, NF-004, NF-005, NF-006, NF-007, NF-008, NF-009, NF-010, NF-011, NF-012, NF-013, NF-014, NF-015 |
21
+ | 《2026 年度国家自然科学基金项目指南·申请规定》 | 2026 年度(逐年更新) | NF-014, NF-015 |
2
22
 
3
23
  **Boundary:** this plugin checks an **NSFC proposal's text and electronic document properties** and
4
24
  reports the identity clues it finds, alongside the length and form-review items a deployment
package/README-hi.md CHANGED
@@ -1,4 +1,24 @@
1
- # dsh-nsfc-form-check
1
+ # dsh-nsfc-form-check — NSFC आवेदन की औपचारिक जाँच और संस्था की अपनी सूची के आधार पर पहचान-संकेत की चेतावनी
2
+
3
+ `dsh-nsfc-form-check` एक NSFC आवेदन — उसकी मुख्य पंक्तियाँ, इलेक्ट्रॉनिक दस्तावेज़-गुण, और संस्था की अपनी पहचान-शब्द सूची — पढ़ता है और उस सामग्री की जाँच एक संस्करणबद्ध नियम-पैक से करता है: क्या कोई सूची कॉन्फ़िगर है, कॉन्फ़िगर किए गए आवेदक, संस्था और पर्यवेक्षक नाम मुख्य पाठ में तथा निर्धारित पंक्ति-सीमा में कहाँ आते हैं, शीर्षक, लेखक, कंपनी और अंतिम-संशोधन गुणों में क्या दर्ज है, सामग्री उपयोगकर्ता द्वारा तय लंबाई-सीमा के भीतर है या नहीं, कॉन्फ़िगर किए गए औपचारिक जाँच-मद और दोहरा-आवेदन प्रकटीकरण मौजूद हैं या नहीं, पर्यवेक्षक का नाम वार्षिक दिशानिर्देश के अनुसार भरा गया है या नहीं, और कोई कॉन्फ़िगर किया गया गोप्य या संवेदनशील शब्द आता है या नहीं। प्रत्येक निष्कर्ष उस धारा का नाम देता है जिससे वह आया, और बताता है कि वह धारा सीधा प्रावधान है, सिद्धांत है या स्थानीय कॉन्फ़िगरेशन; और जो जाँच नहीं चल सकी वह `skipped` में कारण सहित दर्ज होती है।
4
+
5
+ ## यह किन सवालों का जवाब देता है
6
+
7
+ | आपका सवाल | इसका जवाब |
8
+ |---|---|
9
+ | आवेदक नाम की सूची किसी ने नहीं भरी। तो पहचान की जाँच चुपचाप पास हो जाती है? | नहीं। जब `authorNames`, `institutionNames` और `advisorNames` तीनों खाली हों तो सबसे पहले `NF-001` दर्ज होता है, और जिन पहचान-जाँचों को ये शब्द चाहिए वे सब कारण सहित `skipped` में दर्ज होती हैं। इसलिए निष्कर्ष-सूची खाली होने का अर्थ कभी "कुछ गड़बड़ नहीं" नहीं होता — कोई निष्कर्ष निकालने से पहले `NF-001` और `skipped` की प्रविष्टियाँ देखें। |
10
+ | मुख्य पाठ में आवेदक के समान उपनाम वाला एक सह-लेखक आया है। | `NF-002` कॉन्फ़िगर किए गए `authorNames` को पंक्ति-दर-पंक्ति शब्दशः मिलाता है, इसलिए एक ही नाम के दूसरे व्यक्ति, सामान्य उपनाम, या किसी अन्य शोधकर्ता के काम का उद्धरण भी पकड़ में आ सकता है। यह निष्कर्ष केवल तकनीकी चेतावनी है — 《国家自然科学基金条例》(国务院令第796号) 第二十一条 समीक्षकों से गोपनीयता चाहती है और मुख्य पाठ में नाम आने को मना नहीं करती — इसलिए जिस शब्द को आप जाँच चुके हों उसे `allowList` में डाला जा सकता है। |
11
+ | दस्तावेज़-गुण में लेखक फ़ील्ड में नाम है। क्या यह दर्ज होगा, और क्या पहले सूची कॉन्फ़िगर करनी होगी? | दर्ज होगा, और सूची की ज़रूरत नहीं। `NF-006` को roster नहीं चाहिए: `authorNames` खाली होने पर भी वह किसी भी भरे लेखक-गुण को दर्ज करता है, और roster कॉन्फ़िगर होने पर बताता है कि मान आवेदक के नाम से मेल खाता है या नहीं। `NF-005`, `NF-007` और `NF-008` को पहचान-शब्द सूची चाहिए और उसके बिना वे `skipped` में जाते हैं। चारों केवल दस्तावेज़-गुण पढ़ते हैं, मुख्य पाठ के बारे में कुछ नहीं कहते। |
12
+ | पृष्ठ और शब्द की सीमाएँ मैंने खुद भरी हैं। क्या यह बताएगा कि आवेदन बहुत लंबा है? | केवल आपकी तय की हुई सीमा के भीतर। `NF-010` में `maxLines` और `maxChars` बिना कॉन्फ़िगर के आते हैं और वह `skipped` में जाता है, क्योंकि ये सीमाएँ हर वर्ष और परियोजना-प्रकार के अनुसार बदलती हैं; भरने के बाद वह निकाले गए अनुच्छेदों की संख्या या अक्षर-योग दर्ज करता है जो सीमा से अधिक है। `maxLines` निकाले गए अनुच्छेद गिनता है, छपे हुए पृष्ठ नहीं, इसलिए वह पृष्ठ-संख्या के बराबर नहीं है। |
13
+ | हमारे शोध कार्यालय द्वारा माँगी गई सभी औपचारिक जाँच-मदें सामग्री में थीं? | `require` कॉन्फ़िगर होने तक `NF-011` स्वयं को `skipped` में दर्ज करता है, और सूची के बिना वह उसे जानने का दावा नहीं करता। कॉन्फ़िगर होने पर वह आपके `match` वाक्यांशों को शब्दशः मिलाता है और जो नहीं मिलते उन्हें दर्ज करता है। वह देखता है कि वाक्यांश मौजूद है, यह नहीं कि वह कॉलम ठीक भरा है या हस्ताक्षर असली है। |
14
+ | हम पिछले वर्ष का आवेदन फिर जमा कर रहे हैं। प्रकटीकरण टिप्पणी ज़रूरी है? | `NF-012` को एक साथ दो चीज़ें चाहिए: `markerPatterns`, जो आपके टेम्पलेट में दोहरे या अगली कड़ी के आवेदन की शब्दावली पहचानते हैं, और `requiredDisclosure`, जो बताता है कि क्या प्रकट करना है। कोई एक भी कॉन्फ़िगर न हो तो वह `skipped` में जाता है; मार्कर कॉन्फ़िगर हों पर घोषणा न मिले तो वह बताता है कि यह नियम लागू नहीं होता। वह प्रकटीकरण की शब्दावली नहीं मान लेता, और यह भी तय नहीं करता कि आवेदन वाकई दोहरा है। |
15
+
16
+ ## यह किन मानकों पर आधारित है
17
+
18
+ | दस्तावेज़ | संख्यांक | इन्हें उद्धृत करने वाले नियम |
19
+ |---|---|---|
20
+ | 《国家自然科学基金条例》 | 国务院令第796号 | NF-001, NF-002, NF-003, NF-004, NF-005, NF-006, NF-007, NF-008, NF-009, NF-010, NF-011, NF-012, NF-013, NF-014, NF-015 |
21
+ | 《2026 年度国家自然科学基金项目指南·申请规定》 | 2026 年度(逐年更新) | NF-014, NF-015 |
2
22
 
3
23
  **Boundary:** this plugin checks an **NSFC proposal's text and electronic document properties** and
4
24
  reports the identity clues it finds, alongside the length and form-review items a deployment
package/README-pt.md CHANGED
@@ -1,4 +1,24 @@
1
- # dsh-nsfc-form-check
1
+ # dsh-nsfc-form-check — Revisão formal de uma candidatura ao NSFC e aviso de indícios de identidade segundo a lista da instituição
2
+
3
+ `dsh-nsfc-form-check` lê uma candidatura ao NSFC —as suas linhas de texto, as propriedades eletrónicas do documento e a lista de termos de identidade da própria instituição— e confronta esse material com um pacote de regras versionado: se existe uma lista configurada, em que linhas do corpo e dentro de que intervalo de linhas configurado aparecem os termos de requerente, instituição e orientador que configurou, o que consta nas propriedades de título, autor, empresa e última modificação, se o material cabe no limite de extensão fixado pela instalação, se estão presentes os itens de revisão formal e a declaração de candidatura repetida que configurou, se o nome do orientador está preenchido como exigem as orientações anuais, e se aparece algum termo classificado ou sensível configurado. Cada constatação nomeia a cláusula de onde vem e indica se essa cláusula é um requisito direto, um princípio ou uma configuração local, e toda a verificação que não pôde ser executada consta em `skipped` com o seu motivo.
4
+
5
+ ## O que ele responde
6
+
7
+ | Você pergunta | O que ele responde |
8
+ |---|---|
9
+ | Ninguém preencheu a lista de nomes de requerentes. A verificação de identidade passa sem mais? | Não. `NF-001` é a primeira coisa reportada quando `authorNames`, `institutionNames` e `advisorNames` estão vazios, e cada verificação de identidade que precisa desses termos consta em `skipped` com o seu motivo. Uma lista de constatações vazia nunca significa que nada estava errado — leia `NF-001` e as entradas de `skipped` antes de tirar qualquer conclusão. |
10
+ | No corpo aparece um coautor com o mesmo apelido do requerente. | `NF-002` compara literalmente os `authorNames` configurados, linha a linha, pelo que um homónimo, um apelido comum ou a citação do trabalho de outro investigador podem coincidir. A constatação é apenas um aviso técnico — 《国家自然科学基金条例》(国务院令第796号) 第二十一条 exige confidencialidade aos avaliadores e nada proíbe que um nome apareça no corpo — por isso um termo já esclarecido pode ser acrescentado a `allowList`. |
11
+ | A propriedade de autor tem um nome. É reportado, e é preciso configurar antes uma lista? | É reportado, e não é precisa lista. `NF-006` não necessita de roster: com `authorNames` vazio continua a reportar qualquer propriedade de autor não vazia, e com roster configurado diz se o valor corresponde a um nome de requerente. `NF-005`, `NF-007` e `NF-008` precisam de uma lista de termos de identidade e sem ela entram em `skipped`. As quatro leem apenas as propriedades, pelo que nada dizem sobre o corpo do texto. |
12
+ | Os limites de páginas e palavras fui eu que preenchi. Vai dizer-me que a candidatura é demasiado longa? | Apenas dentro do limite que você definiu. `NF-010` sai com `maxLines` e `maxChars` por configurar e entra em `skipped`, porque esses limites mudam todos os anos e conforme o tipo de projeto; depois de preenchidos, reporta o número de parágrafos extraídos ou o total de caracteres que os excede. `maxLines` conta parágrafos extraídos, não páginas paginadas, pelo que não equivale a um número de páginas. |
13
+ | Estavam no material todos os itens de revisão formal que o nosso gabinete de investigação pede? | `NF-011` reporta-se em `skipped` até `require` ser configurado, e sem lista não finge conhecê-la. Depois de configurada, compara literalmente as suas frases `match` e reporta as que não encontra. Verifica que a frase está presente, não que a casela esteja bem preenchida nem que a assinatura seja autêntica. |
14
+ | Vamos reapresentar a candidatura do ano passado. A nota de declaração tem de constar? | `NF-012` precisa ao mesmo tempo de `markerPatterns`, que reconhecem a redação do seu modelo para uma candidatura repetida ou de continuação, e de `requiredDisclosure`, que enumera o que deve ser declarado. Com qualquer um deles por configurar entra em `skipped`; quando os marcadores estão configurados mas a declaração não é encontrada, reporta que esta regra não é aplicável. Nunca supõe uma redação da declaração nem decide que a candidatura seja realmente repetida. |
15
+
16
+ ## Normas que segue
17
+
18
+ | Documento | Número | Regras que o citam |
19
+ |---|---|---|
20
+ | 《国家自然科学基金条例》 | 国务院令第796号 | NF-001, NF-002, NF-003, NF-004, NF-005, NF-006, NF-007, NF-008, NF-009, NF-010, NF-011, NF-012, NF-013, NF-014, NF-015 |
21
+ | 《2026 年度国家自然科学基金项目指南·申请规定》 | 2026 年度(逐年更新) | NF-014, NF-015 |
2
22
 
3
23
  **Boundary:** this plugin checks an **NSFC proposal's text and electronic document properties** and
4
24
  reports the identity clues it finds, alongside the length and form-review items a deployment
package/README-zh.md CHANGED
@@ -1,4 +1,24 @@
1
- # dsh-nsfc-form-check
1
+ # dsh-nsfc-form-check — 国家自然科学基金申请书形式审查与身份线索词提示,按本机构名单核对
2
+
3
+ `dsh-nsfc-form-check` 读取一份国家自然科学基金申请书——正文行、电子文档属性,以及本机构自己配置的身份词名单——按版本化规则库核对:名单是否已配置,配置的申请人、依托单位与导师姓名在正文中及指定行范围内的出现位置,标题、作者、单位、「最后修改者」四个文档属性各写了什么,材料是否超出使用方配置的长度限额,配置的形式审查项与重复申请披露说明是否齐备,导师姓名是否已按当年指南要求如实填写,以及是否出现配置的涉密或敏感词。每一条发现都写出它所依据的条款,并标明该条款是直接规定、原则推论还是本机构配置;每一项无法执行的检查都以 `skipped` 连同原因列出。
4
+
5
+ ## 它回答什么问题
6
+
7
+ | 你会问 | 它怎么答 |
8
+ |---|---|
9
+ | 申请人姓名名单没填,匿名检查是不是就直接通过了? | 不是。`authorNames`、`institutionNames`、`advisorNames` 三项都为空时,最先报出的就是 `NF-001`,其余需要名单的匿名检查逐条以 `skipped` 连同原因列出。所以发现列表为空永远不等于没有问题——下结论前先看 `NF-001` 与 `skipped` 条目。 |
10
+ | 正文里出现了一个与申请人同姓的合作者。 | `NF-002` 按行逐字匹配配置的 `authorNames`,因此同姓同名、常见姓氏、引用他人姓名都可能命中。命中只是技术性提示——《国家自然科学基金条例》(国务院令第796号) 第二十一条要求评审方保密,并未禁止正文出现姓名——已经人工确认无需处理的词可以加入 `allowList`。 |
11
+ | 文档属性里的作者栏有名字,会报出来吗?需要先配名单吗? | 会报,且不必先配名单。`NF-006` 在 `authorNames` 为空时也会报出非空的作者字段,配了名单则进一步说明是否命中申请人姓名;`NF-005`、`NF-007`、`NF-008` 需要身份词名单,没有名单即进 `skipped`。这四条都只读文档属性,对正文内容不作任何判断。 |
12
+ | 页数和字数限额是我自己填的,它会告诉我材料超长吗? | 只在你自己填的限额内报。`NF-010` 出厂时 `maxLines` 与 `maxChars` 均未配置,本条进 `skipped`,因为限额逐年变化且按项目类型不同;填好之后,超出配置的段落行数或字数会被报出。`maxLines` 统计的是抽取后的段落行数,不等同于排版页数,不能当页数用。 |
13
+ | 本机构科研管理部门要求的形式审查项,材料里都有吗? | `require` 未配置时 `NF-011` 报自己进 `skipped`,没有清单时它不假装知道清单是什么。配置之后,它按你写的 `match` 字面匹配,把找不到的条目报出。它只核对字样是否存在,不判断该栏是否填写正确,也不判断签字是否真实。 |
14
+ | 我们是在去年申请基础上重新提交,必须写披露说明吗? | `NF-012` 需要两项配置同时到位:`markerPatterns` 用来识别你所在模板对重复申请或延续申请的表述,`requiredDisclosure` 列出必须披露的内容。缺任一项本条进 `skipped`;配了标记但材料中没有该声明时,本条报告为不适用。它不假定披露内容的写法,也不判定这份材料究竟是否属于重复申请。 |
15
+
16
+ ## 依据的标准
17
+
18
+ | 文件 | 文号 | 引用它的规则 |
19
+ |---|---|---|
20
+ | 《国家自然科学基金条例》 | 国务院令第796号 | NF-001, NF-002, NF-003, NF-004, NF-005, NF-006, NF-007, NF-008, NF-009, NF-010, NF-011, NF-012, NF-013, NF-014, NF-015 |
21
+ | 《2026 年度国家自然科学基金项目指南·申请规定》 | 2026 年度(逐年更新) | NF-014, NF-015 |
2
22
 
3
23
  **Boundary:** this plugin checks an **NSFC proposal's text and electronic document properties** and
4
24
  reports the identity clues it finds, alongside the length and form-review items a deployment
package/README.md CHANGED
@@ -1,4 +1,24 @@
1
- # dsh-nsfc-form-check
1
+ # dsh-nsfc-form-check — NSFC proposal form review and identity-clue prompting against the institution's own roster
2
+
3
+ `dsh-nsfc-form-check` reads one NSFC proposal — its body lines, its electronic document properties, and the institution's own roster of identity terms — and checks that material against a versioned rule pack: whether a roster is configured at all, where the configured applicant, institution and advisor terms occur in the body and inside a configured line range, what the title, author, company and last-modified-by properties carry, whether the material fits the length limit the deployment set, whether the configured form-review items and duplicate-application disclosure are present, whether the advisor's name has been filled in as the yearly guidelines require, and whether any configured classified or sensitive term appears. Every finding names the clause it came from, states whether that clause is a direct requirement, a principle or a local configuration, and every check that could not run is listed in `skipped` with its reason.
4
+
5
+ ## What it answers
6
+
7
+ | You ask | What it answers |
8
+ |---|---|
9
+ | Nobody filled in the applicant name list. Does the identity checking just pass? | No. `NF-001` is the first thing reported when `authorNames`, `institutionNames` and `advisorNames` are all empty, and every identity check that needs those terms reports itself in `skipped` with its reason. An empty finding list therefore never means nothing was wrong — read `NF-001` and the `skipped` entries before drawing any conclusion. |
10
+ | A co-author with the same surname as the applicant appears in the body text. | `NF-002` matches the configured `authorNames` literally, line by line, so a namesake, a common surname or a citation of another researcher's work can all be reported. The finding is a technical prompt only — 《国家自然科学基金条例》(国务院令第796号) 第二十一条 requires confidentiality from reviewers and says nothing that forbids a name in the body — so a term you have already cleared can be added to `allowList`. |
11
+ | The author property holds a name. Is that reported, and does it need a configured list? | Yes, and no. `NF-006` does not need a roster: with `authorNames` empty it still reports any non-empty author property, and with a roster configured it says whether the value matches an applicant name. `NF-005`, `NF-007` and `NF-008` do need an identity-term list and enter `skipped` without one. All four only read the properties, so they say nothing about the body text. |
12
+ | I filled in the page and word limits myself. Will it tell me the proposal is too long? | Only within the limit you set. `NF-010` ships `maxLines` and `maxChars` unset and enters `skipped`, because those limits change every year and by project type; once you fill them in it reports the extracted paragraph count or the character total that exceeds them. `maxLines` counts extracted paragraphs, not typeset pages, so it is not the same as a page count. |
13
+ | Did the material include every form-review item our research office asks for? | `NF-011` reports itself in `skipped` until `require` is configured, and with no checklist the plugin does not pretend to know one. Once configured it matches your `match` phrases literally and reports the ones it cannot find. It checks that the phrase is present, not that the column was filled in correctly or that the signature is genuine. |
14
+ | We are re-submitting last year's proposal. Must the disclosure note be there? | `NF-012` needs both `markerPatterns`, which recognise your template's wording for a repeat or follow-on application, and `requiredDisclosure`, which lists what must be disclosed. With either unset it enters `skipped`; when the markers are configured but no declaration is found it reports that this rule does not apply. It never assumes a disclosure wording, and never decides that a proposal really is a repeat. |
15
+
16
+ ## Standards it follows
17
+
18
+ | Document | Number | Cited by rules |
19
+ |---|---|---|
20
+ | 《国家自然科学基金条例》 | 国务院令第796号 | NF-001, NF-002, NF-003, NF-004, NF-005, NF-006, NF-007, NF-008, NF-009, NF-010, NF-011, NF-012, NF-013, NF-014, NF-015 |
21
+ | 《2026 年度国家自然科学基金项目指南·申请规定》 | 2026 年度(逐年更新) | NF-014, NF-015 |
2
22
 
3
23
  **Boundary:** this plugin checks an **NSFC proposal's text and electronic document properties** and
4
24
  reports the identity clues it finds, alongside the length and form-review items a deployment
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-nsfc-form-check",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "国家自然科学基金申请书形式审查与匿名化提示(依据《国家自然科学基金条例》与申请人导入的当年指南,仅提示差异,不作出定性结论)",
5
5
  "type": "module",
6
6
  "main": "lib/index.mjs",